У меня есть сайт 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 должны быть в порядке.
Любые идеи, где я должен начать диагностировать это?
plugin = python3
строфу из ini моего uwsgi vassal, что, в свою очередь, означало, что мой проект python3 django фактически не загружался или беги правильно,Ответы:
У меня была какая-то проблема, оказалось, что мое приложение wsgi возвращало UNICODE вместо BYTE STRINGS (я был на python3); и ничего не показывается в логах по этому поводу ... WSGI ожидает байтовые строки в выводе, никогда не unicode.
При вызове вашего приложения вместо
return "string"
вас следует использоватьreturn b"string"
илиreturn "string".encode("utf-8")
Вы можете проверить http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 для получения дополнительной информации об использовании uwsgi с python3 .
источник
return ["hello world"]
должно бытьreturn [b"hello world"]
больше информации на: uwsgi-docs.readthedocs.io/en/latest/Python.html