我有一个疑问,就是使用吸盘式打击工作。
我的数据库中有2000多个搜索关键字我想知道数据库中每个关键字的google和bing排名。为此,我使用auto-(un)boxing。但AuthorityLabs将在1小时内处理1000个POST请求。我使用sucker punch将每个请求作为后台作业发送到AuthorityLab。如何限制仅在1小时内运行1000个作业,剩余作业仅在1小时后开始。另外,我想每天运行这些工作来分析排名变化。
答案 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
可能是自定义佣金任务......