我写了一个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
如何使线程运行?我想念什么吗?
答案 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)