我怎样才能对工人使用 Sidekiq 延迟

How can I use Sidekiq delay with a worker

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

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

有什么办法可以实现吗?

使用 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

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

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