我希望我的烧瓶应用程序能够同时处理多个调用。
我一直在测试使用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)
答案 0 :(得分:4)
@Lukas是对的。
我在Google Chrome中使用两个标签进行调试。显然,Chrome通过使用两个标签相同的套接字来尝试智能化。启动Chrome时,Chrome处理的处理方式可以使用-socket-reuse-policy
标记进行更改。
更简单的测试方法是在每个选项卡中使用不同的主机名,或者使用curl -N
(-N
标志,无缓冲区来查看流式传输)。这样做确实按预期工作。