我在云中有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])
然后运行
gunicorn -w 4 -b 0.0.0.0:8000 app:app
工作人员开始没有错误,但是当我尝试用浏览器打开它时,我只得到没有正文的标题:
Connection: "close"
Content-Length: "14"
...and so on
如果我添加一些自定义标题,我会得到它作为响应,但没有响应正文。 请帮忙
答案 0 :(得分:12)
添加格雷厄姆的解释,替换
return iter([data])
与
return [bytes(data, 'utf-8')]
在Python 3下为我工作。当我拥有它时解决了同样的问题。
答案 1 :(得分:6)
您的代码不是Python 3的有效WSGI应用程序。它必须返回一个可迭代的字节字符串,而不是本机(python 3中的unicode)字符串。使用iter()也是多余的,直接返回列表。