烧瓶应用上下文和芹菜集成


将芹菜与 Flask 应用程序

集成时,芹菜是否需要了解 Flask 应用程序上下文?

我可以做这样的事情吗:

import celery from Celery
celery = Celery()
@task
def mytask():

还是我必须这样做:

def make_celery(app=None):
    app = app or create_app(os.getenv('FLASK_CONFIG') or 'default')
    celery = Celery(__name__, broker=app.config.CELERY_BROKER_URL)
    celery.conf.update(app.conf)
    TaskBase = celery.Task
    class ContextTask(TaskBase):
        abstract = True
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return TaskBase.__call__(self, *args, **kwargs)
    celery.Task = ContextTask
    return celery

然后运行芹菜 = make_celery(应用程序)?

Celery 任务只需要知道应用程序上下文,如果你正在做需要它的事情(数据库查询等)。否则,您可以按原样使用芹菜。

相关内容

  • 没有找到相关文章

最新更新