小编And*_*rew的帖子

优雅地停止 docker 容器中的芹菜

我在 docker 容器中运行 celery,处理来自rabbitmq 的任务。我试图停止并删除芹菜容器,同时允许当前正在运行的任务完成。文档建议向主进程发送 TERM 或 INT 信号应该热关闭 celery,尽管我发现子进程刚刚被杀死。

当我发送 TERM 正在运行的进程时,它会抛出:

WorkerLostError('Worker exited prematurely: signal 15 (SIGTERM).',)

当我发送 INT 时,正在运行的进程会退出,没有错误,尽管它也不允许任务按照文档的建议完成。

我使用以下命令启动 docker 容器: su -m celery_user -c "python manage.py celery worker -Q queue-name"

对于为什么会发生这种情况有什么想法吗?该信号是否会终止容器以及 celery 进程?

我用以下方式发送信号: docker kill --signal="TERM" containeriddocker exec containerid kill -15 1

python celery django-celery docker

5
推荐指数
1
解决办法
3788
查看次数

标签 统计

celery ×1

django-celery ×1

docker ×1

python ×1