【发布时间】:2017-10-18 15:19:46
【问题描述】:
threaded=True 的每个请求都在一个新线程中处理。但是,如果我将 threading 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 使用的是哪种线程,但 Python 一次只能运行 一个 本机 Python 线程。
-
因为默认的烧瓶 WSGI 无论如何都只用于开发,我建议从一开始就切换到 Gevent 或 gunicorn,也可以解决问题flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/…
-
@ForceBru werkzeug.pocoo.org/docs/0.12/serving/…
-
2020 年进来的人可能会注意到这个 sn-p 完美运行,线程化,10 秒内 2 个线程。只需更新旧的 py2 打印和除声明。
标签: python multithreading flask