【问题标题】:How do I start background threads when launching a Flask app through gunicorn?通过 gunicorn 启动 Flask 应用程序时如何启动后台线程?
【发布时间】:2017-05-11 05:43:25
【问题描述】:

我正在通过解释器直接启动我的 Flask 应用程序。

if __name__ == '__main__':
    t = Thread(target=run_schedule)
    t.start()
    context = ('cert.pem', 'key.pem')
    app.run(host='0.0.0.0',port=8080,debug=False,ssl_context=context)

run_schedule 函数永远循环,偶尔解除阻塞以执行任务。

显然当我不再调试时我应该使用像gunicorn这样的wsgi服务器,但是它没有通过main()调用模块,所以线程没有启动。

将它们放在该块之外是行不通的,因为如果任何其他代码导入该模块,线程就会启动!

@before_first_request 几乎是我需要的,但它需要我先用请求戳服务器。不理想。

推荐的方法是什么? (或者后台线程是否违背 wsgi 哲学?)

【问题讨论】:

标签: python flask wsgi gunicorn


【解决方案1】:

您不应在服务器应用程序中生成后台线程。例如a WSGI server might spawn several server apps 然后你有几个后台线程。而是查看cronjobsjob queues like Celery

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2017-03-07
    • 1970-01-01
    • 2020-09-12
    相关资源
    最近更新 更多