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

9

У меня есть сайт 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 должны быть в порядке.

Любые идеи, где я должен начать диагностировать это?

d4nt
источник
Я могу сообщить о подобной проблеме, но с еще более базовой конфигурацией. Заголовки отправляются правильно, но тело ответа просто пусто. Я испытываю это с Python 3.4 как uWSGI, так и gunicorn.
Дакота
следите за журналом uwsgi и читайте его очень внимательно, это многословное раздражение, но я смог в конечном итоге отследить свою проблему, я пропустил plugin = python3строфу из ini моего uwsgi vassal, что, в свою очередь, означало, что мой проект python3 django фактически не загружался или беги правильно,
ThorSummoner

Ответы:

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"

Вы можете проверить http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 для получения дополнительной информации об использовании uwsgi с python3 .

PKL
источник
1
+1 Это помогло мне. Я получал пустой ответ от python3 virtualenv + uwsgi + nginx stack. return ["hello world"]должно быть return [b"hello world"]больше информации на: uwsgi-docs.readthedocs.io/en/latest/Python.html
AmirHossein