celery 是否为每个任务都 fork 自己? 假设我有这样的事情:
obj = object()
@celery.task
def print_id():
print id(obj)
#another server
print_id.delay()
print_id.delay()
print_id.delay()
多次调用任务时(不重启celery),id总是一样吗?
请您参考如下方法:
这取决于。参见 concurency docs .
如果您设置至少两个具有 multiprocessing 的 worker,id 将不会保持不变。即使您使用一个节点,并在 X 任务执行后重新启动它(celery worker 中的一个选项),id 也不会保持不变。
基本上你不应该在你的代码中依赖它。通过 Celery 运行任务的真正目的是分发它们。
请问为什么会有这样的问题?您有任何需要的用例吗?
