在其他工作完成后,Sidekiq执行工作

时间:2016-09-08 02:11:35

标签: ruby-on-rails ruby sidekiq

如果在sidekiq完成第一个已执行的作业后,如何设置执行作业。例如: 我今天早上开了第一份工作

GoodWorker.perform_async(params) #=> JID-eetc

当它仍在进行中时,我再次在同一个工作人员中再次执行了一项工作

GoodWorker.perform_ascyn(params) #=> JID-eetc2

等 现在发生的事情是Sidekiq一直处理工作, 有没有办法一次完成一项工作?

2 个答案:

答案 0 :(得分:2)

简答:不。

答案很长:您可以使用互斥锁来保证一次只执行一个worker的一个实例。如果您在群集上运行,则需要使用Redis或其他媒介来维护互斥锁。否则,您可能会尝试将这些作业放在它们自己的队列中,然后启动一个单独的Sidekiq实例,它只监视该队列,并发一个。

答案 1 :(得分:0)

您是否可以将Sidekiq设置为仅具有一个线程?然后一次只能执行一个作业。