2016-09-28 3 views
0

Попытка сделать сервер wsgi после этого урока Let's Build a Web Server. Но получение ошибки TypeError: initial_value must be str or None, not bytes с использованием кода внизу в python 3.5.2.Тип Ошибка в Python 3.5.2

import io 
env['wsgi.input']  = io.StringIO(self.request_data) 

Как исправить проблему. Заранее спасибо.

ответ

1

import StringIO изменения в import io

изменение request_line=request_line.rstrip('\r\n') в request_line=request_line.rstrip(b'\r\n')

изменение env['wsgi.input']=StringIO.StringIO(self.request_data) в env['wsgi.input'] = io.BytesIO(self.request_data)

изменение self.client_connection.sendall(response) в self.client_connection.sendall(response.encode())

Надеюсь работала хорошо сейчас.

0

Во-первых, это учебник используется python2, так что вы можете столкнуться с дополнительными проблемами, если вы пытаетесь применить его непосредственно к Python3

Согласно PEP3333 (спецификация WSGI обновлялись Python3) wsgi.inputenviron variable должен быть поток байт , а не текстовый поток, поэтому вы должны использовать io.BytesIO(), а не io.StringIO.

Ошибка, которую вы в настоящее время получаете ist, потому что ваш self.request_data is bytes, но io.StringIO() требует, чтобы его аргумент был str.

Смежные вопросы