配置
你首先需要有一个 Celery 实例, 这个实例称为 celery 应用. 其地位就相当于 Flask 中 一样. 这个实例被用作所有 Celery 相关事务的 入口, 如创建任务和管理工人, 因此它必须可以被其他模块导入.
例如, 你可以把它放在一个 tasks 模块中. 这样不需要重新配置, 你就可以使用 tasks 的子类, 增加 Flask 应用情境的支持, 并钩接 Flask 的配置.
只要如下这样就可以在 Falsk 中使用 Celery 了:
- from celery import Celery
- def make_celery(App):
- celery = Celery(
- App.import_name,
- backend=App.config['CELERY_RESULT_BACKEND'],
- broker=App.config['CELERY_BROKER_URL']
- )
- celery.conf.update(App.config)
- class ContextTask(celery.Task):
- def __call__(self, *args, **kwargs):
- with App.app_context():
- return self.run(*args, **kwargs)
- celery.Task = ContextTask
- return celery
这个函数创建了一个新的 Celery 对象, 使用了应用配置中的 broker , 并从 Flask 配置中更新了 Celery 的其余配置. 然后创建了一个任务子类, 在一个应用情境中包 装了任务执行.
来源: http://www.bubuko.com/infodetail-3100261.html