Flask应用程序部署在Heroku线程问题上

时间:2020-05-20 15:50:07

标签: python flask heroku python-multithreading

我写了一个Flask应用程序,它需要一个辅助线程来在浏览器中显示视频流。 这是创建线程的方法:

if __name__ == '__main__':
    # # start a thread that will perform motion detection
    t = threading.Thread(target=prepare_video_stream)
    t.daemon = True
    t.start()

    print(t.is_alive())

    app.run(debug=True, threaded=True, use_reloader=False)

当使用内置烧瓶服务器运行我的应用程序时,一切正常,但是使用gunicorn部署到heroku后,线程似乎无法启动。 这是我的Procfile:

web: gunicorn app:app

如何使线程运行?我想念什么吗?

1 个答案:

答案 0 :(得分:0)

我找到了solution to this

关键是在@app.before _first_request中运行您的线程,而不是在锁定的__main__中命名

@app.before_first_request
def thread_start():
    # # start a thread that will perform motion detection
    t = threading.Thread(target=prepare_video_stream)
    t.daemon = True
    t.start()
    print(t.is_alive())

if __name__ == '__main__':
    app.run(debug=True, threaded=True, use_reloader=False)