【发布时间】:2017-11-15 00:32:43
【问题描述】:
我有一个繁重的外部库类,它需要时间来初始化并消耗大量内存。我想至少为每个任务实例创建一次。
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.
Celery 启动了 32 个工作进程,所以我希望打印 "initializing ... done" 32 次,因为我假设每个工作进程都创建一个任务实例。令人惊讶的是,我得到了打印一次。那里实际发生了什么?谢谢。
【问题讨论】:
标签: python python-3.x multiprocessing celery celery-task