背景
我试图提供一个使用 wsgiserver的烧瓶REST。它在Werkzeug起作用,但在gevent wsgiserver中没有反应。这里有一个简单的烧瓶应用程序,由提供。
import gevent
from gevent.pywsgi import WSGIServer
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET'])
def index_get():
return 'OK'
if __name__ == '__main__':
# app.run(host='0.0.0.0',port=80, threaded=True, debug=False)
WSGIServer(('0.0.0.0', 80), app).serve_forever()调查
Python-3.5.2
flask-0.11.1
gevent-1.2.1
浏览器继续加载响应。但是,服务器控制台显示它已经给出了响应。不小心,我更改了代码
@app.route('/', methods=['GET'])
def index_get():
return 'Worked'浏览器成功地接收到响应。我发现只有当响应字符串是一个或两个字符串时,它才会失败。
问题
有人能证实这个问题吗?
其中的机制是什么?
我怎样才能解决这个问题,才能响应一个两个字符串呢?
发布于 2017-03-25 03:12:52
好吧,我真的应该先读一下教程。
根据本教程
The stream is closed when a size zero chunk is sent.
我应该附加一个零大小的块,比如'\n'
@app.route('/', methods=['GET'])
def index_get():
return json.dumps({'ReturnCode':200,'message':'command sent.'}) + '\n'gevent的WSGIServer似乎与Werkzeug略有不同。我应该做些改变来适应它。推荐的应用程序不同于烧瓶。虽然,只是附加一个'\n'也对我有用。
from gevent.wsgi import WSGIServer
def application(environ, start_response):
status = '200 OK'
body = '<p>Hello World</p>'
headers = [
('Content-Type', 'text/html')
]
start_response(status, headers)
return [body]
WSGIServer(('', 8000), application).serve_forever()https://stackoverflow.com/questions/42919952
复制相似问题