我想从Python脚本中开始并停止芹菜工人进程。我用Redis做经纪人和后端。
我发出一个Popen命令,从计划工人任务的脚本中启动工作人员:
# start the celery deamon
cmd = 'celery worker '
cmd += '--app intertext.tasks '
cmd += '--loglevel critical'
subprocess.Popen(shlex.split(cmd))
完成所有步骤后,我要删除所有辅助进程。我知道我可以做一些像ps -ef | grep celery | awk '{print $2}' | xargs kill -9
这样的事情,但这不能在Windows上运行。
杀死用Popen打开的进程的最佳方法是什么(或者在Python脚本中启动和阻止芹菜deamon的最佳方法)?
发布于 2018-05-12 03:41:04
最后,我使用了以下方法:
from psutil import Process
from subprocess import Popen
import shlex
def start_celery():
'''
Start the celery deamon.
@returns:
subprocess.Popen object that supports pid lookup via
self.pid
'''
cmd = 'celery worker '
cmd += '--app intertext.tasks '
cmd += '--loglevel error'
return subprocess.Popen(shlex.split(cmd))
def terminate_process(pid):
'''
Stop a process given its pid or stop all processes if pid
is a list of identifiers.
@args:
int pid: the process identifier of the root process that
spawned child celery processes
'''
process = Process(pid)
for child in process.children(recursive=True):
child.kill()
process.kill()
# main
celery_process = start_celery()
# ...do work... then
terminate_process(celery_process.pid)
发布于 2020-01-13 23:30:50
首先,输入这个脚本向所有芹菜工人展示:
ps -aux | grep celery
然后杀死所有芹菜工人如下:
pkill -9 -f 'worker_name worker'
我希望这能帮助你解决问题。
https://stackoverflow.com/questions/50305601
复制