芹菜会为每项任务自己分叉吗?可以说我有这样的事情:
obj = object()
@celery.task
def print_id():
print id(obj)
#another server
print_id.delay()
print_id.delay()
print_id.delay()
多次调用任务时(不重新启动 celery),id 是否始终相同?
芹菜会为每项任务自己分叉吗?可以说我有这样的事情:
obj = object()
@celery.task
def print_id():
print id(obj)
#another server
print_id.delay()
print_id.delay()
print_id.delay()
多次调用任务时(不重新启动 celery),id 是否始终相同?
这取决于。请参阅并发文档。
如果您使用 设置至少两个工人multiprocessing
,id
则不会保持不变。即使您使用一个节点,并在X
任务执行后重新启动它(芹菜工作者中的一个选项),它id
也不会保持不变。
基本上你不应该在你的代码中依赖它。通过Celery运行任务的目的就是分发它们。
请问为什么会有这样的问题?您有任何需要的用例吗?