使用吸盘打孔工作

时间:2016-06-14 13:22:34

标签: ruby-on-rails job-scheduling

我有一个疑问,就是使用吸盘式打击工作。

我的数据库中有2000多个搜索关键字我想知道数据库中每个关键字的google和bing排名。为此,我使用auto-(un)boxing。但AuthorityLabs将在1小时内处理1000个POST请求。我使用sucker punch将每个请求作为后台作业发送到AuthorityLab。如何限制仅在1小时内运行1000个作业,剩余作业仅在1小时后开始。另外,我想每天运行这些工作来分析排名变化。

2 个答案:

答案 0 :(得分:0)

速率限制不是您的队列系统所关心的问题,更不用说SuckerPunch不是为处理高级延迟/排队而设计的,它只是将异步作业从线程池移动到线程。

如果您真的想要进行速率限制,请使用像Sidekiq这样的真实队列系统,并将一些实际代码用于工作。

Sidekiq Enterprise原生支持它:https://github.com/mperham/sidekiq/wiki/Ent-Rate-Limiting Sidekiq-throttler似乎提供相同的功能:https://github.com/gevans/sidekiq-throttler

但是你也可以通过在未来的特定时间(每次执行4分钟后)将作业排队(或者只执行一个自己执行的作业)来延迟执行(因此先发制人地限制费率)要求)并在4分钟后再次入队。

与开源一样,检查代码并自行决定。

答案 1 :(得分:0)

你可以这样做吗?

YourProcessingJob.set(wait: 1.hours).perform_later

可能是自定义佣金任务......