简单的HTTP响应:为什么此功能适用于Python2但不适用于Python3

时间:2019-01-09 11:05:18

标签: python http curl

使用以下代码,运行方式:

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

我不明白为什么在使用/usr/lib/uwsgi/plugins/python_plugin.so时为什么会很好地显示curl所显示的GET和POST值,但在使用/ 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]

我在Python3中添加了解码('utf-8')以将字节转换为字符串。使用Python2时,我忽略了这一点。

1 个答案:

答案 0 :(得分:0)

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

更改为:

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

使其正常工作。