如何解决多个sidekiq作业中的api速率限制?

How to solve api rate limit in multiple sidekiq jobs?

提问人:paulo vilarinho 提问时间:10/18/2023 更新时间:10/18/2023 访问量:32

问:

我的一个 sidekiq 作业负责批量触发一堆其他作业,但由于正在创建的作业量很大,我在暂存环境中遇到了一些问题,这导致了很多速率限制错误,因为我的一个作业正在访问外部 api。

我正在尝试找到一种方法来缓解此问题

到目前为止,我唯一尝试过的是让作业重试,但有些作业最终会花费大量时间才能重试,因为它们卡在相同的错误上

Ruby-on-Rails Sidekiq (英语

评论


答:

0赞 paulo vilarinho 10/18/2023 #1

我认为最好的选择是将您的工作分散到一个时间范围内,使您的 sidekiq 工作负载在尊重 api 限制率的同时大大窒息。

这也有利于您的应用程序当前正在运行的其他作业,这样您的 sidekiq 就不会在运行您排队的这些作业时被锁定在新作业之外。

尝试这样的事情

 class GenericScheduleWorker
   include Sidekiq::Worker
   def perform
     User.all.find_each do |user|
       seconds = rand(1..3600).seconds
       GenericWorker.perform_in(seconds,user.id)
     end
   end
 end