我希望我的 Flask 应用程序能够同时处理多个调用。
我一直在测试使用 threaded=True
或 processes=3
和下面的代码运行但是当我对服务器进行两次调用时,后者总是必须等待第一个一个来完成。
我知道建议将应用程序部署在更复杂的 WSGI 容器上,但现在我只希望我的小应用程序能够同时处理 2 个调用。
from flask import Flask, Response, stream_with_context
from time import sleep
app = Flask(__name__)
def text_gen(message):
for c in message:
yield c
sleep(1)
@app.route("/")
def hello():
stream = text_gen('Hello World')
return Response(stream_with_context(stream))
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)
最佳答案
@Lukas是对的。
我正在使用两个选项卡在 Google Chrome 中进行调试。显然,Chrome 试图通过对两个选项卡使用相同的套接字来变得聪明。在启动 Chrome 时,Chrome 如何处理可以使用 -socket-reuse-policy
标志更改。
更简单的测试方法是在每个选项卡中使用不同的主机名或使用 curl -N
(-N
标志表示没有缓冲区可以查看流)。这样做确实按预期工作。
关于python - 线程 Flask 应用程序未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959493/