有要求的flask破损管
我想在flask应用程序中发送本地REST请求,如下所示:
from flask import Flask, url_for, requestimport requests
app = Flask(__name__)
@app.route("/<name>/hi", methods=["POST"])
def hi_person(name):
form = {"name": name}
return requests.post(url_for("hi", _external=True), data=form)
@app.route("/hi", methods=["POST"])
def hi():
return 'Hi, %s!' % request.form["name"]
发送curl -X POST http://localhost:5000/john/hi导致整个烧瓶应用程序冻结。当我发送一个终止信号时,我得到一个坏的管道错误。有什么办法可以防止flask冻结?
回答:
在能够处理并发请求(可能是gunicorn或uWSGI)的适当WSGI服务器下运行flask应用程序,它将起作用。在开发时,请使用以下命令在Flask提供的服务器中启用线程:
app.run(threaded=True)
但请注意,不建议将Flask服务器用于生产环境。从Flask 1.0开始,threaded默认情况下处于启用状态flask,实际上,你想使用命令行上的命令来运行你的应用程序。
发生的情况是,使用请求你正在向flask应用程序发出第二个请求,但是由于它仍在忙于处理第一个请求,因此只有在处理完第一个请求后,它才会响应第二个请求。
顺便说一下,在Python 3下,socketserver实现可以更优雅地处理断开连接,并继续提供服务而不是崩溃。
以上是 有要求的flask破损管 的全部内容, 来源链接: utcz.com/qa/402357.html