首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gevent WSGIServer没有响应

Gevent WSGIServer没有响应
EN

Stack Overflow用户
提问于 2017-03-21 06:32:54
回答 1查看 930关注 0票数 2

背景

我试图提供一个使用 wsgiserver的烧瓶REST。它在Werkzeug起作用,但在gevent wsgiserver中没有反应。这里有一个简单的烧瓶应用程序,由提供。

代码语言:javascript
复制
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

浏览器继续加载响应。但是,服务器控制台显示它已经给出了响应。不小心,我更改了代码

代码语言:javascript
复制
@app.route('/', methods=['GET'])
def index_get():
    return 'Worked'

浏览器成功地接收到响应。我发现只有当响应字符串是一个或两个字符串时,它才会失败。

问题

有人能证实这个问题吗?

其中的机制是什么?

我怎样才能解决这个问题,才能响应一个两个字符串呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-25 03:12:52

好吧,我真的应该先读一下教程。

根据本教程

The stream is closed when a size zero chunk is sent.

我应该附加一个零大小的块,比如'\n'

代码语言:javascript
复制
@app.route('/', methods=['GET'])
def index_get():
    return json.dumps({'ReturnCode':200,'message':'command sent.'}) + '\n'

gevent的WSGIServer似乎与Werkzeug略有不同。我应该做些改变来适应它。推荐的应用程序不同于烧瓶。虽然,只是附加一个'\n'也对我有用。

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42919952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档