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

Chr*_*row 4 python redis python-rq

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

根据文档,我需要向计算机上的一个工作进程发送SIGINT或SIGTERM命令:

取下工人

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

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

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

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

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

gio*_*ioi 5

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