3

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

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

谢谢...

4

1 回答 1

5

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

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

于 2013-07-19T08:21:05.453 回答