2015-11-26 6 views
1

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

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 в настройки параметров? Буду признателен за любую помощь по этому вопросу.

ответ

2

Если добавить «бить» = True, чтобы ваши варианты, когда вы звоните worker.run (** варианты) это даст задание бить работнику:

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() 

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