Flask应用程序上下文和芹菜集成

时间:2015-04-18 22:05:11

标签: python flask celery

在将芹菜与Flask应用程序集成时,celery是否需要了解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

然后运行celery = make_celery(app)?

1 个答案:

答案 0 :(得分:1)

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

相关问题