У меня есть сайт 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 должны быть в порядке.
Есть идеи, с чего мне начать диагностику?
У меня возникла проблема: оказалось, что мое приложение 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.