在FLASK应用程序中同时运行芹菜节拍和工人



我正在使用Celery开发FLASK应用程序。在其中,我使用行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()

这会运行应用程序和工作程序,但在我关闭工作程序之前,Celery节拍不会运行。有没有什么方法可以同时运行这两者?也许以某种方式将-B标志添加到选项设置中?如果能在这件事上得到任何帮助,我将不胜感激。

如果在选项中添加'beat'=True,当您调用worker.run(**options)时,它会将beat任务交给worker:

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

当工人停下时,它应该停止跳动。

相关内容

  • 没有找到相关文章

最新更新