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 .
如果您使用多处理
设置了至少两个工作线程,则id
将不会保持不变。即使您使用一个节点,并在 X 任务执行(celery Worker 中的一个选项)后重新启动它,id
也不会保持不变。
基本上你不应该在代码中依赖它。通过 Celery 运行任务的真正目的是分发它们。
请问为什么会有这样的问题?您有需要的用例吗?
关于python - (django-) celery 会自动 fork 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738717/