我有一个 Django 网站,我正尝试通过 uWSGI 为其提供服务。我已按如下方式启动服务器:
uwsgi --emperor .
Ctrl+Z
bg 1
(有两个 .ini 文件分别指向网站的测试版和生产版,分别在 9001 和 9002 上提供服务)
然后我尝试获取我的网站:
curl http://localhost:9002
当我这样做时,我收到一条消息,说该 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)
没有记录任何错误。
我应该说,这在重新启动之前工作正常,所以 uwsgi.ini 文件应该没问题。
有什么想法我应该从哪里开始诊断这个问题?
答案1
我遇到了一些问题,结果是我的 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了解有关使用的更多信息uwsgi和python3。