Назад | Перейти на главную страницу

uWSGI возвращает пустой ответ

У меня есть сайт 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.