2016-09-28 88 views
0

试图按照本教程制作一个wsgi服务器Let's Build a Web Server. 但是在python 3.5.2中使用下面的代码获取错误TypeError: initial_value must be str or None, not bytes在Python 3.5.2中输入错误

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

我该如何解决这个问题。提前致谢。

回答

1

变化import StringIOimport 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(更新python3 WSGI规范)遇到其他问题的wsgi.inputenviron variable应该是一个字节流,而不是文本流,因此您应该使用io.BytesIO(),而不是io.StringIO

您目前收到的错误是因为您的self.request_databytes,但是io.StringIO()要求其参数为str