(django-)芹菜叉本身?

时间:2013-07-19 05:29:05

标签: python concurrency celery django-celery

芹菜是否为每项任务分叉? 让我们说我有这样的事情:

obj = object()

@celery.task
def print_id():
   print id(obj)

#another server
print_id.delay()
print_id.delay()
print_id.delay()

多次调用任务时(不重启celery),id是否始终相同?

1 个答案:

答案 0 :(得分:2)

这取决于。请参阅concurency docs

如果您使用multiprocessing设置至少两名员工,id将不会保持不变。即使您使用一个节点,并在X任务执行后(芹菜工作者中的一个选项)重新启动它,id也不会保持不变。

基本上你不应该依赖你的代码。通过 Celery 运行任务的目的是分发它们。

我可以问为什么会有这样的问题?你有任何需要的用例吗?