Как реализовать Celery, используя шаблон фабрики приложений Flask - PullRequest
0 голосов
/ 24 октября 2019

У меня возникли проблемы с реализацией celery с помощью приложения фабрики приложений python flask

Я намереваюсь создать экземпляр приложения Celery из файла инициализации приложения, как показано ниже:

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

Iне может использовать сельдерей из другого проекта при вызове.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Ответ от @API был правильным ... Также добавьте следующее в вашу конфигурацию сельдерея ... Это поможет предотвратить бесконечную повторную попытку, вызванную сельдереем, когда брокер не работает или не может быть достигнут ..

broker_transport_options  = {
'max_retries': 3,
'interval_start': 0,
'interval_step': 0.2,
'interval_max': 0.5,
}

Версия используемого сельдерея == 4.3 по состоянию на момент ответа на этот вопрос.

0 голосов
/ 24 октября 2019
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)

Узнайте, как реализован сельдерей в этой фреске Flask

...