TypeError: getresponse () odebrał nieoczekiwany argument słowa kluczowego „buffering”
Nie można uruchomić z 32-bitowego systemu operacyjnego Windows 7. Działa dobrze w 64-bitowym systemie operacyjnym Windows 7 z 32/64 bitowym Pythonem. Używam Pythona 3.4.3 z najnowszymi żądaniami API.
Otrzymuję następujący błąd:
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'
Wystąpił inny wyjątek podczas obsługi powyższego wyjątku:
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
Wystąpił inny wyjątek podczas obsługi powyższego wyjątku:
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))
Wystąpił inny wyjątek podczas obsługi powyższego wyjątku:
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))
Kod jest następujący
import requests
from requests_file import FileAdapters = 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)
Ten kod działa dobrze w 64-bitowym systemie operacyjnym Windows7, ale zwraca błąd zgodnie z opisem w 32-bitowym systemie operacyjnym Windows7.
Mogę również pobierać małe pakiety przy użyciu dostarczonego kodu na 32-bitowym systemie operacyjnym Windows 7. Jedynym problemem jest pobieranie dużych pakietów.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
poprawna odpowiedź
https://stackoverflow.com/a/38579824/456550
@fche's .
Ten komentarz
https://github.com/requests/re ... 94851
z żądań opiekuna podsumowuje, co się tutaj dzieje.
Jest to nieoczekiwany problem związany ze sposobem, w jaki śledzenie wyjątków jest raportowane w Pythonie 3. PEP 3134 wprowadził ten raport „łańcuchowych wyjątków” [...]. Celem tego zgłoszenia błędu jest podkreślenie, że niektóre wyjątki występują w klauzulach except oraz ustalenie, który łańcuch wyjątków został trafiony. Jest to potencjalnie bardzo przydatne: na przykład możesz złapać wyjątek po zniszczeniu zasobu, a następnie spróbować użyć tego zasobu w bloku oprócz, który zostanie złapany w innym wyjątku. Przydatne jest jednoczesne wyświetlanie obu wyjątków.
Kluczem jest to, że TypeError wyrzucony jako pierwszy wyjątek nie jest powiązany z kolejnymi. W rzeczywistości jest to standardowy przepływ sterowania w urllib3. Oznacza to, że prawdziwym wyjątkiem, który jest tutaj generowany, jest wyjątek request.exceptions.ConnectionError, który otacza wyjątek urllib3.exceptions.MaxRetryError zgłoszony w urllib3.
To nie jest błąd zapytania, to tylko brzydkie śledzenie wprowadzone przez Python 3. Możemy spróbować nieco złagodzić jego nieprzyjemne rzeczy poprzez refaktoryzację metody w urllib3 [...], ale to tylko usunie TypeError z łańcucha : reszta pozostanie na miejscu.