2
我有一个沉重的外部库类需要时间来初始化和消耗大量的内存。我想至少每个任务实例创建一次。是Celery Task每个工作进程初始化还是每个应用一次?
class NlpTask(Task):
def __init__(self):
print('initializing NLP parser')
self._parser = nlplib.Parser()
print('done initializing NLP parser')
@property
def parser(self):
return self._parser
@celery.task(base=NlpTask)
def my_task(arg):
x = my_task.parser.process(arg)
# etc.
芹菜开始32个工作进程,所以我期望的打印"initializing ... done"
32倍,因为我认为一个任务实例每个每个工人创造。令人惊讶的是,我得到了印刷一次。那里真的发生了什么?谢谢。
这就是我的观点 - 我希望每个工作人员一次,似乎每个芹菜实例一次。我编辑了这个问题 – davka
@davka更新回答。 – ChillarAnand