我怎样才能对工人使用 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。另一种方法是自己跟踪速率限制并手动重新安排作业。
我有一个工作人员多次调用外部 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。另一种方法是自己跟踪速率限制并手动重新安排作业。