在Python-RQ中减少机器上的工作者数量?

时间:2013-02-28 00:47:17

标签: python redis python-rq

在Python-RQ中减少计算机上工作者数量的好方法是什么?

According to the documentation,我需要向计算机上的一个工作进程发送SIGINT或SIGTERM命令:

  

取消工人

     

如果工人在任何时候收到SIGINT(通过 Ctrl + C )或SIGTERM(通过kill),工作人员会等到当前正在运行的任务完成,停止工作循环并优雅地注册自己的死亡。

     

如果在此删除阶段再次收到SIGINTSIGTERM,工作人员将强行终止子进程(发送它SIGKILL),但仍会尝试注册自己死了。

这似乎意味着很多编码开销:

  • 需要跟踪工作进程的PID
  • 需要一种从远程计算机发送SIGINT命令的方法

我是否真的需要自定义构建它,或者有没有办法使用Python-RQ库或其他现有库轻松完成此操作?

1 个答案:

答案 0 :(得分:5)

  1. 使用rq.Worker.all()
  2. 获取所有正在运行的工作人员
  3. 选择要杀死的工作人员
  4. 使用os.kill(worker.pid, signal.SIGINT)