TypeError:getresponse()得到一个意外的关键字参数'buffering'

sru*_*jan 11 python-3.x

无法从Windows 7 32位操作系统上传.它在带有32/64位Python的Windows 7 64位操作系统上运行良好.我正在使用Python 3.4.3和最新的请求API.

我得到的错误是:

Traceback (most recent call last): File
"C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 376, in _make_request
httplib_response = conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'
Run Code Online (Sandbox Code Playgroud)

在处理上述异常期间,发生了另一个异常:

Traceback (most recent call last): File
"C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 559, in urlopen
body=body, headers=headers) File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 378, in _make_request
httplib_response = conn.getresponse() File "C:\Python34\lib\http\client.py", line 1171, in getresponse
response.begin() File "C:\Python34\lib\http\client.py", line 351, in begin
version, status, reason = self._read_status() File "C:\Python34\lib\http\client.py", line 313, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\Python34\lib\socket.py", line 374, in readinto
return self._sock.recv_into(b)
ConnectionResetError: WinError 10054] An existing connection was forcibly close d by the remote host
Run Code Online (Sandbox Code Playgroud)

在处理上述异常期间,发生了另一个异常:

Traceback (most recent call last): File "C:\Python34\lib\site-packages\requests\adapters.py", line 370, in send
timeout=timeout File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 609, in urlopen
_stacktrace=sys.exc_info()[2]) File "C:\Python34\lib\site-packages\requests\packages\urllib3\util\retry.py", line 245, in increment
raise six.reraise(type(error), error, _stacktrace) File "C:\Python34\lib\site-packages\requests\packages\urllib3\packages\six.py", line 309, in reraise
raise value.with_traceback(tb) File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 559, in urlopen
body=body, headers=headers) File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 378, in _make_request
httplib_response = conn.getresponse() File "C:\Python34\lib\http\client.py", line 1171, in getresponse
response.begin() File "C:\Python34\lib\http\client.py", line 351, in begin
version, status, reason = self._read_status() File "C:\Python34\lib\http\client.py", line 313, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\Python34\lib\socket.py", line 374, in readinto
return self._sock.recv_into(b)
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))
Run Code Online (Sandbox Code Playgroud)

在处理上述异常期间,发生了另一个异常:

Traceback (most recent call last): File "Upgrader.py", line 12, in
rdst = requests.post(urldst, files={'1_19_0_developer.exe': resp.content}) File "C:\Python34\lib\site-packages\requests\api.py", line 109, in post
return request('post', url, data=data, json=json, *kwargs) File "C:\Python34\lib\site-packages\requests\api.py", line 50, in request
response = session.request(method=method, url=url, *kwargs) File "C:\Python34\lib\site-packages\requests\sessions.py", line 468, in request
resp = self.send(prep, *send_kwargs) File "C:\Python34\lib\site-packages\requests\sessions.py", line 576, in send
r = adapter.send(request, *kwargs) File "C:\Python34\lib\site-packages\requests\adapters.py", line 412, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetErro r(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))
Run Code Online (Sandbox Code Playgroud)

代码是

import requests 
from requests_file import FileAdapter

s = requests.Session() 
s.mount('file://', FileAdapter()) 
resp = s.get('file:///local_package_name') 
urldst = 'Upload URL' 
rdst = requests.post(urldst, files={'filename': resp.content}) 
print(rdst)
Run Code Online (Sandbox Code Playgroud)

此代码在Windows7 64位操作系统上正常工作,但返回错误,如Windows7 32位操作系统中所述.

此外,我可以使用32位Windows 7操作系统上提供的代码上传小包.唯一的问题是上传大包.

fch*_*che 7

忽略第一个("buffering = True")异常.这是一个内部向后兼容的人工制品.真正的错误是随后的错误.


Chr*_*ong 7

这是@fche正确答案的更多上下文。

请求维护者的评论总结了这里发生的事情。

这是一个无法预料的问题,它与如何在Python 3中报告异常回溯有关。PEP 3134引入了这种“链接异常”报告[...]。此错误报告的目的是突出显示某些异常在除了块中发生,并弄清楚发生了什么异常链。这可能非常有用:例如,您可以在销毁资源后命中异常,然后尝试在except块中使用该资源,从而导致另一个异常。能够一次看到两个异常很有帮助。

关键是作为第一个异常引发的TypeError与后续异常无关。实际上,这就是urllib3中的标准控制流。这意味着此处引发的真正异常是request.exceptions.ConnectionError异常,该异常包装了urllib3中引发的urllib3.exceptions.MaxRetryError异常。

这不是Requests的错误,它只是Python 3引入的一个丑陋的回溯。 :其余部分将保留在原位。