芹菜会在每一项任务中分叉吗?假设我有这样的东西:
obj = object()
@celery.task
def print_id():
print id(obj)
#another server
print_id.delay()
print_id.delay()
print_id.delay()
当多次调用任务(不重启celery)时,id总是相同的吗?
发布于 2013-07-19 07:03:12
那得看情况。参见concurency docs。
如果您使用multiprocessing
设置了至少两个工作进程,则id
将不会保持不变。即使您使用一个节点,并在X
任务执行后重新启动它( celery worker中的一个选项),id
也不会保持不变。
基本上,你不应该在你的代码中依赖它。通过Celery运行任务的真正目的就是分发它们。
我可以问一下为什么会有这样的问题吗?您是否有任何需要它的用例?
https://stackoverflow.com/questions/17738717
复制