Skip to main content
 首页 » 编程设计

python之(django-) celery 叉自己吗

2024年11月01日28grandyang

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 运行任务的真正目的是分发它们。

请问为什么会有这样的问题?您有任何需要的用例吗?