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

问题描述 投票:0回答:1

我的 sidekiq 作业之一负责批量触发一堆其他作业,但由于正在创建的作业量很大,我在临时环境中面临一些问题,这导致了很多速率限制错误我的工作之一是获取外部 api。

我正在寻找一种方法来缓解这个问题

到目前为止,我唯一尝试过的就是让作业重试,但有些作业最终会花费大量时间来重试,因为它们陷入了相同的错误

ruby-on-rails sidekiq
1个回答
0
投票

我认为最好的选择是将你的工作分散到一个时间范围内,使你的 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
© www.soinside.com 2019 - 2024. All rights reserved.