在停止celery 之前等待当前任务完成

u59ebvdq  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(477)

我创建了一个运行celery 的systemd进程。我已经将并发性设置为1,因为我需要在先进先出(fifo)队列上运行任务。
如果我需要停止celery 进行一些维护,如何让celery 在停止前等待当前正在运行的任务完成?我不希望它等待整个队列完成。我只需要celery 在celery 本身停止之前等待当前任务完成运行。
这是我的系统服务文件

[Unit]
Description=celery daemon
After=network.target

[Service]
User=<username>
Group=<group>
WorkingDirectory=/path_to_django_project/project_name
ExecStart=celery -A project_name worker --concurrency=1

[Install]
WantedBy=multi-user.target
ql3eal8s

ql3eal8s1#

这正是正在发生的事情当您启动优雅关闭时,celery worker将从队列中取消订阅,等待其自己的工作进程执行的任务完成,然后它将关闭。
另外,您的起始行不正确。并发设置可以是 -c 或者 --concurrency . 以下是“工人帮助”中的引用:
-c concurrency,--处理队列的子进程的并发数。默认值是系统上可用的CPU数。
并发性等于1似乎是错误的,除非运行celery worker的机器是单核的。
celery 文档的daemonization部分用一个例子解释了如何使用systemd。

相关问题