Простой ответ HTTP: почему это работает с Python2, но не с Python3 - PullRequest
0 голосов
/ 09 января 2019

Со следующим кодом, работающим с:

uwsgi --socket myapp.sock --plugins /usr/lib/uwsgi/plugins/python_plugin.so \
--module wsgi --chmod-socket=664

Я не понимаю, почему это дает мне значения GET и POST, напечатанные curl, при использовании /usr/lib/uwsgi/plugins/python_plugin.so, но не при использовании / usr / lib / uwsgi / plugins / python 3 _plugin.so

Я использую curl следующим образом: curl -v --form 'file=@testfile;filename=newfilename' --form 'q=c' localhost?q=x

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])

    try:
        request_body_size = int(environ.get('CONTENT_LENGTH', 0))
    except (ValueError):
        request_body_size = 0

    request_body = environ.get('wsgi.input', b'').read(request_body_size).decode('utf-8')
    get_values = environ.get('QUERY_STRING', '')

    return ["Hello There!\n\n" + request_body + get_values]

Я добавил декодер ('utf-8') для преобразования байтов в строку в Python3. При работе с Python2 я пропустил это.

1 Ответ

0 голосов
/ 09 января 2019
return ["Hello There!\n\n" + request_body + get_values]

изменено на:

return [("Hello There!\n\n" + request_body + get_values).encode('utf-8')]

заставляет его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...