Gunicorn(Python3.4和3.3)只发送没有数据的头文件

Dmi*_*rov 6 python wsgi python-3.x gunicorn

我在云中有vm,python 3.3(也尝试过3.4 - 相同的结果)和Gunicorn 18.我复制/粘贴'hello world'应用程序(app.py):

def app(environ, start_response):
    data = "Hello, World!\n"
    start_response("200 OK", [
        ("Content-Type", "text/plain"),
        ("Content-Length", str(len(data)))
    ])
    return iter([data])
Run Code Online (Sandbox Code Playgroud)

然后运行

gunicorn -w 4 -b 0.0.0.0:8000 app:app
Run Code Online (Sandbox Code Playgroud)

工作人员开始没有错误,但当我尝试用浏览器打开它时,我只得到没有正文的标题:

Connection: "close"
Content-Length: "14"
...and so on
Run Code Online (Sandbox Code Playgroud)

如果我添加一些自定义标题,我会得到它作为响应,但没有响应正文.请帮忙

小智 14

添加格雷厄姆的解释,替换

return iter([data])
Run Code Online (Sandbox Code Playgroud)

return [bytes(data, 'utf-8')]
Run Code Online (Sandbox Code Playgroud)

在Python 3下为我工作.当我拥有它时解决了同样的问题.


Gra*_*ton 6

您的代码不是Python 3的有效WSGI应用程序.它必须返回一个可迭代的字节字符串,而不是本机(python 3中的unicode)字符串.使用iter()也是多余的,直接返回列表.