如何将Sidekiq延迟与工作人员

时间:2017-07-05 08:41:23

标签: ruby-on-rails sidekiq

我有一种情况,我有一个工作人员,可以多次调用外部API。问题是我们每小时可以对此API进行多次调用的阈值。

我想要做的是创建一个工作程序,它将对这个外部API进行许多顺序调用。如果在这些调用之间我们收到错误,因为我们已经达到了那个小时内允许的连接数,那么工作人员将保存文档并安排新工作人员以便稍后完成剩余的API调用(也许1,2小时后。理想情况下,这应该是可配置的,例如:10分钟,1小时等)。

有没有我能做到的?

2 个答案:

答案 0 :(得分:3)

使用SideKiq,您可以安排何时使用友好的API执行作业:

MyWorker.perform_in(3.hours, 'mike', 1) # Expect a duration
MyWorker.perform_at(3.hours.from_now, 'mike', 1) # Expect a date

检查出来:Scheduled Jobs

答案 1 :(得分:1)

您需要Sidekiq Enterprise及其速率限制API。另一种方法是自己跟踪速率限制并手动重新安排作业。

https://github.com/mperham/sidekiq/wiki/Ent-Rate-Limiting