Запустите Celery beat и работника одновременно в приложении FLASK

Я работаю над приложением FLASK с Celery. В нем я запускаю приложение, используя строку app.run(), Если я изменю это на следующее

if __name__ == '__main__':

application = current_app._get_current_object()

worker = worker.worker(app=application)
beat = beat.beat(app=application)

options = {
    'broker': app.config['CELERY_BROKER_URL'],
    'loglevel': 'INFO',
    'traceback': True,
}

worker.run(**options)
beat.run(**options)
app.run()

Это запускает приложение и рабочий, но ритм сельдерея не запускается, пока я не выключу рабочий. Есть ли способ, которым я могу запустить оба одновременно? Может быть, добавить -B пометить в настройках параметров как-нибудь? Буду признателен за любую помощь по этому вопросу.

1 ответ

Если вы добавите 'beat' = True к своим опциям, когда вы вызываете worker.run(**options), он даст задачу beat для работника:

if __name__ == '__main__':

application = current_app._get_current_object()

worker = worker.worker(app=application)

options = {
    'broker': app.config['CELERY_BROKER_URL'],
    'loglevel': 'INFO',
    'traceback': True,
    'beat': True,
}

worker.run(**options)
app.run()

Это должно остановить удар, когда работник останавливается.

Другие вопросы по тегам