我正在使用Rails应用程序中的Resque版本1.25.2。
我试图通过pause_processing
调用我所获取的所有工作者的实例方法unpause_processing
及其Resque::Worker
的反向Resque.workers
。但是,工作人员仍然继续处理动态添加到任何队列的新作业。通过instance.paused?
检查状态时,每个工作人员都返回true
。
不确定我是否真的可以控制在后台运行的工作人员。
据我理解pause_processing
,unpause_processing
和shutdown
执行与发送USR2
CONT
和KILL
信号相同的事情Resque workers。
我错过了一些微不足道的事情,还是有另一种管理工人的方法。
答案 0 :(得分:3)
这是因为您正在调用此方法并在完全不同的工作实例上修改状态。正如您can see所做的那样是设置实例变量的值。当您调用Resque.workers
时,您将获得所有工作程序的实例,但不会获取其他进程中正在运行的工作程序的实例。 Resque不允许您远程修改正在运行的工作程序的状态。如果要从外部更改Resque工作器的状态,则必须通过信号与其进行交互。如果您只是调用这些方法,那么您就不会发送信号。