在停止 celery 之前等待当前任务完成
Wait for current task to complete before stopping celery
我创建了一个 运行 芹菜的 systemd 进程。我已将并发设置为 1,因为我需要在先进先出 (FIFO) 队列中向 运行 执行任务。
如果我需要停止 celery 进行一些维护,如何让 celery 等待当前 运行ning 任务完成后再停止?我不希望它等待整个队列完成。我只需要 celery 等待当前任务完成 运行ning 在 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
这正是正在发生的事情。 - 当你发起优雅关闭时,Celery worker会取消订阅队列,等待自己的worker进程执行完任务,然后关闭。
此外,您的 ExecStart 行不正确。并发设置使用 -c
或 --concurrency
设置。这是工人帮助的引述:
-c CONCURRENCY, --concurrency CONCURRENCY
Number of child processes processing the queue.
The default is the number of CPUs available on your system.
并发等于 1 似乎是错误的,除非你的 Celery worker 运行 所在的机器是单核的。
Celery 文档的守护进程部分解释了如何使用 systemd,an example。
我创建了一个 运行 芹菜的 systemd 进程。我已将并发设置为 1,因为我需要在先进先出 (FIFO) 队列中向 运行 执行任务。
如果我需要停止 celery 进行一些维护,如何让 celery 等待当前 运行ning 任务完成后再停止?我不希望它等待整个队列完成。我只需要 celery 等待当前任务完成 运行ning 在 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
这正是正在发生的事情。 - 当你发起优雅关闭时,Celery worker会取消订阅队列,等待自己的worker进程执行完任务,然后关闭。
此外,您的 ExecStart 行不正确。并发设置使用 -c
或 --concurrency
设置。这是工人帮助的引述:
-c CONCURRENCY, --concurrency CONCURRENCY Number of child processes processing the queue. The default is the number of CPUs available on your system.
并发等于 1 似乎是错误的,除非你的 Celery worker 运行 所在的机器是单核的。
Celery 文档的守护进程部分解释了如何使用 systemd,an example。