urllib3 - nicht dazu in der Lage einen http-proxy
Ich versuche zu pflegen einen pool von verbindungen zu einem proxy. Mein code sieht wie folgt aus:
>>> from urllib3 import PoolManager
>>> pool = PoolManager(10)
>>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies={'http': 'http://proxy'})
Wenn ich diesen starte, es nicht:
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "urllib3/poolmanager.py", line 117, in urlopen
> response = conn.urlopen(method, u.request_uri, **kw)
> File "urllib3/connectionpool.py", line 427, in urlopen
> **response_kw)
> File "urllib3/response.py", line 195, in from_httplib
> **response_kw)
> TypeError: __init__() got an unexpected keyword argument 'proxies'
Irgendeine Idee, was ich falsch mache? Nach urllib3 docs, keyword-Argumente sind geschickt urlopen, aber wie es aussieht, ist nicht passiert in diesem Fall.
Hier ist der link zu das urllib beschreibt die Verwendung von proxy-keyword arg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den docs Sie verbunden sind, um Python ' s das urllib, die eine andere Bibliothek als urllib3. Wenn Sie anrufen, urllib3 ist urlopen, das ist nicht das gleiche urlopen als das urllib ist. Sorry für die Verwirrung. 🙂
Im moment, über einen proxy mit urllib3 ist nicht gut dokumentiert. Wenn Sie möchten, erkunden Sie die urllib3 code, werfen Sie einen Blick auf
urllib3.poolmanager.ProxyManager.
Ansonsten, schlage ich vor, Sie versuchen Anträge, die rationalisiert die Proxy-Funktion auf der Oberseite der urllib3. Siehe: http://docs.python-requests.org/en/latest/user/advanced/?highlight=proxy#proxies
Dein code würde in etwa so Aussehen.
Wenn Sie es trotzdem bevorzugen, zu verwenden urllib3, dann mit der
ProxyManager
würde wie folgt Aussehen:Könnten Sie auch Ihre eigenen erstellen ProxyManager-Objekt direkt, aber ich benutze lieber die
proxy_from_url
Verknüpfung.docs
dir, und sendet einen pull-request. 🙂 Wenn Sie weitere Fragen haben, können wir besprechen es in der pull-request-thread auf Github.