芹菜自定义任务的__init__构造函数被称为每个请求

时间:2019-04-03 11:15:59

标签: python celery

我只希望每个进程初始化一次任务,但是__init__构造函数被称为每个请求。

我阅读了celery(https://docs.celeryproject.org/en/latest/userguide/tasks.html#instantiation)用户指南,上面写着:

  

不是为每个请求实例化一个任务,而是在   任务注册表作为全局实例。这意味着__init__   构造函数每个过程只会调用一次,并且该任务   类在语义上更接近演员。

我的task.py

class AuthTask(Task):
    def __init__(self):
        self._user = {'bruce':'123456'}
        print('in init')
    def run(self, username, password):
        try:
            return self._user[username] == password
        except KeyError:
            return False
AuthTask = app.register_task(AuthTask())

我的trigger.py

result = AuthTask.delay('bruce', '123456')

我希望__init__构造函数只被调用一次,但是每个请求都被调用。每次我运行trigger.py

时,都会打印“ init”

0 个答案:

没有答案