如何减少Python-RQ中机器上的工作进程数量?
在Python-RQ中,有什么好的方法来减少机器上的工作进程数量呢?
根据文档,我需要向机器上的一个工作进程发送SIGINT或SIGTERM命令:
关闭工作进程
如果工作进程在任何时候收到
SIGINT
(通过Ctrl+C)或SIGTERM
(通过kill
命令),它会等到当前正在运行的任务完成,然后停止工作循环,并优雅地记录自己的结束。如果在这个关闭过程中,再次收到
SIGINT
或SIGTERM
,工作进程会强制终止子进程(发送SIGKILL
),但仍会尝试记录自己的结束。
这似乎意味着需要写很多代码:
- 需要跟踪工作进程的PID(进程ID)
- 需要有办法从远程机器发送SIGINT命令
我真的需要自己来实现这些,还是说可以用Python-RQ库或者其他现有的库轻松做到呢?
1 个回答
6
以下是一些步骤,教你如何结束正在运行的工作者:
- 首先,使用
rq.Worker.all()
来获取所有正在运行的工作者。 - 然后,选择你想要结束的那个工作者。
- 最后,使用
os.kill(worker.pid, signal.SIGINT)
来结束这个工作者。