【问题标题】:Run Celery beat and worker concurrently in FLASK app在 FLASK 应用程序中同时运行 Celery beat 和 worker
【发布时间】:2016-02-29 14:26:30
【问题描述】:

我正在使用 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 beat 直到我关闭工作程序后才会运行。有什么方法可以同时运行吗?也许以某种方式将-B 标志添加到选项设置中?对于此事,我将不胜感激。

【问题讨论】:

    标签: python flask celery celerybeat


    【解决方案1】:

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

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

    当工人停止时,它应该停止节拍。

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 2016-09-20
      • 2018-09-16
      • 2021-04-08
      • 2014-10-18
      • 2019-05-02
      • 1970-01-01
      • 2015-10-24
      • 2020-08-11
      相关资源
      最近更新 更多