uWSGI返回空响应


9

我有一个Django网站,我正在尝试通过uWSGI服务器。我已经像这样启动了服务器:

uwsgi --emperor .
Ctrl+Z
bg 1

(有两个.ini文件指向站点的测试版本和生产版本,分别在9001和9002上运行)

然后,我尝试获取我的网站:

curl http://localhost:9002

当我这样做时,我收到一条消息,说该容器是忠诚的,但没有实际反应。然后,uwsgi.log包含以下内容:

[pid: 5071|app: 0|req: 2/2] 127.0.0.1 () {26 vars in 357 bytes} [Tue Jul 23 13:20:21 2013] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 302) 2 headers in 96 bytes (1 switches on core 1)

没有错误记录。

我应该说,这在重新启动之前可以正常工作,因此uwsgi.ini文件应该可以。

有什么想法我应该开始诊断吗?


我可以报告类似的问题,但具有更基本的配置。标头已正确发送,但响应正文为空。我在uWSGI和gunicorn的Python 3.4中都遇到了这种情况。
2014年

尾随uwsgi日志并非常仔细地阅读它,这是一个冗长的烦恼,但是我最终能够找到我的问题,我错过了plugin = python3uwsgi vassal的ini中的节,这反过来意味着我的python3 django项目实际上并未被加载或正常运行,
ThorSummoner 2015年

Answers:


8

我遇到了一些问题,原来我的wsgi应用程序正在返回UNICODE而不是BYTE STRINGS(我在python3上);日志中没有任何显示……WSGI期望输出中的字节字符串,而不是unicode。

在应用程序的可调用项中,return "string"您应该使用return b"string"return "string".encode("utf-8")

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    # One of the below can be used.
    return "string".encode("utf-8")
    return b"string"

您可以查看http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3以获得有关将uwsgipython3结合使用的更多信息。


1
+1这对我有帮助。我从python3 virtualenv + uwsgi + nginx堆栈中得到了空响应。return ["hello world"]应当return [b"hello world"]了解更多信息:uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.