如何停止 celery worker?

如何停止 celery worker?

我正在通过 redis 运行 celery。我像这样启动我的工作程序:

celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
        > [email protected]: OK

我像这样杀死它:

celery multi kill worker1
celery multi v3.1.18 (Cipater)
> [email protected]: DOWN

但实际上,该工作程序仍在运行。我无法再次启动该工作程序:

celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
ERROR: Pidfile (worker1.pid) already exists.
Seems we're already running? (pid: 29369)
        > [email protected]: OK

如果我终止该进程,一切都会正常:

kill 29369

但这太麻烦了:我需要知道PID。如何真的使用 celery 命令行工具杀死工作者?

答案1

无法使用celery multi命令停止工作进程。你可以从 pid 文件或 ps 输出中获取 PID,例如

ps auxww | grep '[c]elery worker' | awk '{print $2}' | xargs kill 

或者

kill $(cat /path/to/worker.pid)

相关内容