Celery 信号 task_success 在哪个进程中执行?

use*_*809 3 python worker celery

如果我将回调连接到 celery task_success 信号处理程序,它会在哪个进程中执行?子进程还是工作进程?

文档没有明确列出它。(它为信号 task_sent 列出它,但没有为其他信号列出它:http ://docs.celeryproject.org/en/latest/userguide/signals.html#task-sent )

谢谢...

Ant*_*des 5

没有“子”进程这样的东西;有发送任务的进程(可以是任何 Python 进程,包括 celery worker,或 celery beat,或其他任何东西),还有处理任务的 worker。

所有任务信号除了task_sent在处理任务的worker中执行;事实上,他们不可能在其他任何地方执行。Celery 信号(如 Django 信号)不像操作系统事件,也不像 Celery 任务,它们可以起源于一个进程并在另一个进程中触发某些东西;它们在与它们起源的过程相同的过程中得到处理。它们与 Python 标准库signal模块无关。

  • 不幸的是,Celery 文档(从 3.1 开始)的几个地方缺少与此一样重要和基本的信息。 (2认同)