如果在sidekiq完成第一个已执行的作业后,如何设置执行作业。例如: 我今天早上开了第一份工作
GoodWorker.perform_async(params) #=> JID-eetc
当它仍在进行中时,我再次在同一个工作人员中再次执行了一项工作
GoodWorker.perform_ascyn(params) #=> JID-eetc2
等 现在发生的事情是Sidekiq一直处理工作, 有没有办法一次完成一项工作?
答案 0 :(得分:2)
简答:不。
答案很长:您可以使用互斥锁来保证一次只执行一个worker的一个实例。如果您在群集上运行,则需要使用Redis或其他媒介来维护互斥锁。否则,您可能会尝试将这些作业放在它们自己的队列中,然后启动一个单独的Sidekiq实例,它只监视该队列,并发一个。
答案 1 :(得分:0)
您是否可以将Sidekiq设置为仅具有一个线程?然后一次只能执行一个作业。