uWSGI 返回空响应

d4n*_*4nt 9 django uwsgi

我有一个 Django 站点,我试图通过 uWSGI 为其提供服务。我已经像这样启动了服务器:

uwsgi --emperor .
Ctrl+Z
bg 1
Run Code Online (Sandbox Code Playgroud)

(有两个.ini文件,分别指向网站的测试版和生产版,分别服务于9001和9002)

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

curl http://localhost:9002
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到一条消息,说 vassel 是忠诚的,但没有实际响应。然后 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)
Run Code Online (Sandbox Code Playgroud)

没有错误记录。

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

我应该从哪里开始诊断的任何想法?

小智 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"
Run Code Online (Sandbox Code Playgroud)

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