Запустите 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()
Это должно остановить удар, когда работник останавливается.