ruby-on-rails 如何解决多个sidekiq作业中的API速率限制?

uqzxnwby  于 2023-10-21  发布在  Ruby
关注(0)|答案(1)|浏览(136)

我的一个sidekiq作业负责批量触发一堆其他作业,但由于正在创建的作业数量太大,我在暂存环境中遇到了一些问题,这导致了很多速率限制错误,因为我的一个作业正在访问外部API。
我在想办法缓解这个问题
到目前为止,我尝试的唯一一件事是让作业重试,但有些作业最终需要花费大量时间重试,因为它们在同一个错误上卡住了

dfty9e19

dfty9e191#

我认为最好的选择是将你的工作分散到一个时间框架中,在尊重API限制速率的同时,让你的sidekiq工作量大得令人窒息。
这也有利于您的应用程序正在运行的其他作业,使您的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

相关问题