提问人:paulo vilarinho 提问时间:10/18/2023 更新时间:10/18/2023 访问量:32
如何解决多个sidekiq作业中的api速率限制?
How to solve api rate limit in multiple sidekiq jobs?
问:
我的一个 sidekiq 作业负责批量触发一堆其他作业,但由于正在创建的作业量很大,我在暂存环境中遇到了一些问题,这导致了很多速率限制错误,因为我的一个作业正在访问外部 api。
我正在尝试找到一种方法来缓解此问题
到目前为止,我唯一尝试过的是让作业重试,但有些作业最终会花费大量时间才能重试,因为它们卡在相同的错误上
答:
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
评论