【发布时间】:2019-08-13 18:24:44
【问题描述】:
我正在尝试使用 Gunicorn 构建一个 Flask 应用程序来处理并发请求。值得一提的是,上下文是一个自带容器的 Sagemaker 应用程序。
问题是我需要应用程序定期检查更新。所以我想为此实现一个线程。这是一些带有更新线程的 Flask 代码的最小示例。
server.py
from flask import Flask
import time, threading
app = Flask(__name__)
message = True
def update():
while True:
message = not message
time.sleep(10)
@app.route("/")
def hello():
global message
return message
update_thread = threading.Thread(target=update)
if __name__ == "__main__":
update_thread.start()
app.run()
update_thread.join()
然后我用 gunicorn 启动:
gunicorn -k gevent -b unix:/tmp/gunicorn.sock -w 4 server:app
也许毫不奇怪,更新线程不会启动,因为__main__ 部分从未执行过。
问题:如何在带有 Gunicorn 的 Flask 应用程序中使用更新线程(或类似构造)?
【问题讨论】:
标签: python multithreading flask gunicorn amazon-sagemaker