我的一个sidekiq作业负责批量触发一堆其他作业,但由于正在创建的作业数量太大,我在暂存环境中遇到了一些问题,这导致了很多速率限制错误,因为我的一个作业正在访问外部API。我在想办法缓解这个问题到目前为止,我尝试的唯一一件事是让作业重试,但有些作业最终需要花费大量时间重试,因为它们在同一个错误上卡住了
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
1条答案
按热度按时间dfty9e191#
我认为最好的选择是将你的工作分散到一个时间框架中,在尊重API限制速率的同时,让你的sidekiq工作量大得令人窒息。
这也有利于您的应用程序正在运行的其他作业,使您的sidekiq不会在运行您排队的作业时被锁定在新作业之外。
试试像这样的东西