如何减少Python-RQ中机器上的工作进程数量?

4 投票
1 回答
3304 浏览
提问于 2025-04-17 17:23

在Python-RQ中,有什么好的方法来减少机器上的工作进程数量呢?

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

关闭工作进程

如果工作进程在任何时候收到SIGINT(通过Ctrl+C)或SIGTERM(通过kill命令),它会等到当前正在运行的任务完成,然后停止工作循环,并优雅地记录自己的结束。

如果在这个关闭过程中,再次收到SIGINTSIGTERM,工作进程会强制终止子进程(发送SIGKILL),但仍会尝试记录自己的结束。

这似乎意味着需要写很多代码:

  • 需要跟踪工作进程的PID(进程ID)
  • 需要有办法从远程机器发送SIGINT命令

我真的需要自己来实现这些,还是说可以用Python-RQ库或者其他现有的库轻松做到呢?

1 个回答

6

以下是一些步骤,教你如何结束正在运行的工作者:

  1. 首先,使用 rq.Worker.all() 来获取所有正在运行的工作者。
  2. 然后,选择你想要结束的那个工作者。
  3. 最后,使用 os.kill(worker.pid, signal.SIGINT) 来结束这个工作者。

撰写回答