requests problem mit verschiedenen versionen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Hallo,

Ich habe einen Fehler in requests2.0.1 bemerkt, der bei mehreren Redirects und Verwendung von Cookies auftritt:

Code: Alles auswählen

    File "/usr/local/lib/python2.7/dist-packages/requests/cookies.py", line 311, in _find_no_duplicates
    raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path))
    KeyError: "name=Cookie(version=0, name='bang', value='QUFCQmh5c3FET1RnMUkcXlrMXNBNXV4eFhaU080NWtzYndmUDlDa0p1SEFHZw%3D%3D', port=None, port_specified=False, domain='.dropbox.com', domain_specified=True, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=1383395405, discard=False, comment=None, comment_url=None, rest={'httponly': None}, rfc2109=False), domain=None, path=None"
 
Also habe ich auf requests1.2.3 umgestellt. Dort tritt der Fehler nicht auf. Den Lösungsprozess in https://github.com/kennethreitz/requests/issues/1078, wenn es denn einer ist, konnte ich nicht nachvollziehen, falls es sich um den gleichen Fehler handelt.
Nun treten aber zu häufig Probleme an anderen Stellen mit v.1.2.3 auf, wenn ich größere Dateien hochlade (siehe die ganzen Fehlermeldungen unten).
Wenn ich es richtig verstehe funktioniert der Upload sogar, aber der Fehler kommt trotzdem. Ich habe im source code nachgesehen in adapters.py Z.327.
Da wird eine .packages.urllib3.exceptions.MaxRetryError Meldung abgefangen. Aber ich habe keine Ahnung woher die kommt. urllib3 ist bei mir gar nicht installiert. Habt ihr eine Idee, wie man das Problem lösen kann? Ich hatte mir überlegt beide Versionen parallel zu verwenden. Könnt ihr mir sagen wie das geht? Insbesondere müsste ich beide Versionen über setuptools installieren.

Vielen Dank,
Boa

Code: Alles auswählen

  File "/home/joe/projects/eclipse_ws/nubisave_clone/nubisave/CloudFusion/cloudfusion/store/sugarsync/client.py", line 122, in put_file_async
    response = requests.put("https://"+self.host+"/file/:sc:%s:%s/data" % (self.uid, path_to_dest), data=fileobject, headers=headers, allow_redirects=True, timeout=30)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 99, in put
    return request('put', url, data=data, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 335, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 327, in send
    raise ConnectionError(e)
ConnectionError: HTTPSConnectionPool(host='api.sugarsync.com', port=443): Max retries exceeded with url: /file/:sc:1568885:11_2491885512/data (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)

Code: Alles auswählen

  File "/home/joe/projects/eclipse_ws/nubisave_clone/nubisave/CloudFusion/cloudfusion/store/sugarsync/client.py", line 122, in put_file_async
    response = requests.put("https://"+self.host+"/file/:sc:%s:%s/data" % (self.uid, path_to_dest), data=fileobject, headers=headers, allow_redirects=True, verify=False, timeout=30)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 99, in put
    return request('put', url, data=data, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 335, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 327, in send
    raise ConnectionError(e)
ConnectionError: HTTPSConnectionPool(host='api.sugarsync.com', port=443): Max retries exceeded with url: /file/:sc:1568885:11_2491960888/data (Caused by <class 'socket.error'>: [Errno 32] Broken pipe)

Code: Alles auswählen

  File "/home/joe/projects/eclipse_ws/nubisave_clone/nubisave/CloudFusion/cloudfusion/store/sugarsync/client.py", line 122, in put_file_async
    response = requests.put("http://"+self.host+"/file/:sc:%s:%s/data" % (self.uid, path_to_dest), data=fileobject, headers=headers, allow_redirects=True, verify=False, timeout=30)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 99, in put
    return request('put', url, data=data, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 335, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 327, in send
    raise ConnectionError(e)
ConnectionError: HTTPConnectionPool(host='api.sugarsync.com', port=80): Max retries exceeded with url: /file/:sc:1568885:11_2492016712/data (Caused by <class 'socket.error'>: [Errno 111] Connection refused)
BlackJack

@Boa: Wenn Du `requests` installierst *dann* hast Du danach auch `urllib3` installiert. ;-)
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

@BlackJack: Wieso kann ich das Module dann nicht importieren? Wird es vom Nutzer versteckt, weil es eine bestimmte Version benötigt?
Das bringt mich auf die Idee, dass ich auch direkt die requests Module mit herunterladen könnte und sie lokal im Projekt Verzeichnis ablegen kann

Code: Alles auswählen

In [1]: import urllib3
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/home/.../CloudFusion/<ipython-input-1-dbe53ea169b1> in <module>()
----> 1 import urllib3

ImportError: No module named urllib3

In [2]: 
BlackJack

@Boa: Auf *die* Idee sind die `requests`-Entwickler auch gekommen:

Code: Alles auswählen

In [6]: import requests.packages.urllib3

In [7]:
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Ah, ich bin dabei es zu probieren. Leider scheint immer noch ein Fehler aufzutreten. Blöd, dass er nicht gut reproduzierbar ist. Ich vermute langsam es liegt eher am Server als an requests :(
Antworten