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