如何使用Flask应用程序工厂模式实现Celery

问题描述 投票:0回答:2

我在使用python flask应用程序工厂应用程序实现celery时遇到问题

我打算通过以下应用程序初始化文件创建Celery应用程序的实例:

from celery import Celery
celery = Celery('myapp', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')

被调用时,我无法使用其他蓝图中的芹菜。

python flask celery blueprint
2个回答
0
投票
def init_celery(app):
    celery = Celery()
    celery.conf.broker_url = app.config['CELERY_BROKER_URL']
    celery.conf.result_backend = app.config['CELERY_RESULT_BACKEND']
    celery.conf.update(app.config)

    class ContextTask(celery.Task):
        """Make celery tasks work with Flask app context"""
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)

    celery.Task = ContextTask
    return celery

create_app时初始化芹菜:

init_celery(app)

了解在this Flask cookiecutter中如何实现芹菜>


0
投票

@ API的回答是正确的...还将以下内容添加到您的芹菜配置中...这将有助于防止在代理关闭或无法访问时,芹菜引起的无休止的重试。

© www.soinside.com 2019 - 2024. All rights reserved.