With threaded=True
每个请求都在一个新线程中处理。但是,如果我将应用程序的 threaded 设置为 true,它将显示未知的行为。
这是我的代码。
from flask import Flask
from flask import jsonify
import time
app = Flask("proxapp")
import datetime
@app.route('/slow')
def slow():
start = datetime.datetime.now()
time.sleep(10)
return jsonify(start = start, end = datetime.datetime.now())
try:
app.run(threaded=True)
except Exception, e:
print repr(e)
我在 Windows 中打开了两个选项卡,并尝试在不同的选项卡中请求相同的 url。仅在第一个请求得到处理后才处理第二个请求。第二个请求大约需要 20 秒才能得到处理。
我的代码有什么问题?
从烧瓶文档中得知部署选项
虽然轻量级且易于使用,但 Flask 的内置服务器不适合生产,因为它的扩展性不好,并且默认情况下一次仅处理一个请求。此处记录了一些可用于在生产中正确运行 Flask 的选项。
这就是为什么在第一个请求完成之前不会发生第二个请求,因为 Flask 服务器本身一次只能处理一个请求。为了解决这个问题,你需要在某种部署服务器上运行 Flaskgunicorn or uWSGI这似乎是最受欢迎的。
您还可能会找到以下问题的答案this or this问题有帮助。部署选项还有很多有关解决问题的不同方法的指南和信息的链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)