urllib3 is een Python HTTP-bibliotheek met thread-safe pooling van verbindingen en het bestand na de ondersteuning.
Kenmerken:
& Nbsp; * Re-gebruik van dezelfde socket verbinding voor meerdere verzoeken (HTTPConnectionPool)
& Nbsp; * Bestand posting (encode_multipart_formdata)
& Nbsp; * Ingebouwde redirection en pogingen (optioneel)
& Nbsp; * Thread-safe
Wat is er mis met urllib en urllib2?
Er zijn twee belangrijke kenmerken ontbreken in de Python standaard bibliotheek: Aansluiting hergebruik / pooling en bestand posting. Het is niet erg moeilijk om deze zelf uit te voeren, maar het is veel makkelijker om een module die al deed het werk voor u te gebruiken.
De Python standaard bibliotheken urllib en urllib2 hebben weinig te maken met elkaar. Ze zijn ontworpen om onafhankelijk en standalone zijn, elk oplossen van een ander toepassingsgebied problemen en urllib3 volgt soortgelijke wijze.
Waarom moet ik verbindingen wilt hergebruiken?
Prestaties. Wanneer je normaal doet een urllib gesprek wordt een aparte socket verbinding gemaakt met elk verzoek. Door hergebruik van bestaande aansluitingen (ondersteund sinds HTTP 1.1), zal de verzoeken nemen minder middelen op het einde van de server, en ook zorgen voor een snellere responstijd aan het einde van de klant. Met een aantal eenvoudige benchmarks (zie test / benchmark.py), het downloaden van 15 URL's van google.com is ongeveer twee keer zo snel als u HTTPConnectionPool (waarvan 1 verbinding gebruikt) dan het gebruik van gewone urllib (waarvan 15 verbindingen gebruikt).
Deze bibliotheek is perfect voor:
& Nbsp; * Praten met een API
& Nbsp; * Crawling een website
& Nbsp; * Elke situatie waarin de mogelijkheid om bestanden te posten, handvat omleiding, en opnieuw proberen is nuttig. Het is relatief licht, zodat het kan worden gebruikt voor alles!
Voorbeelden:
Ga naar de voorbeelden wiki voor meer leuke-syntax gemarkeerd voorbeelden.
Maar, lang verhaal kort:
van urllib3 import HTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web'
http_pool = HTTPConnectionPool.from_url (API_URL)
velden = {'v': '1.0', 'q': 'urllib3'}
r = http_pool.get_url (API_URL, velden)
afdrukken r.status, r.data p>
Wat is nieuw in deze release:
- Toegevoegd urllib3.add_stderr_logger () voor het snel waardoor STDERR debug logging in urllib3.
- Native volledige URL parsing (inclusief auth, pad, query, fragment) beschikbaar in urllib3.util.parse_url (url).
- Ingebouwde redirect schakelt methode om 'GET' als de status code is 303. (Issue # 11)
- urllib3.PoolManager stript de regeling en de host voordat u het verzoek uri. (Issue # 8)
- Nieuwe urllib3.exceptions.DecodeError uitzondering voor wanneer de automatische decodering, gebaseerd op het Content-Type header, mislukt.
- Fixed bug met zwembad uitputting en lekkende aansluitingen (Issue # 76). Toegevoegd expliciete verbinding sluiten op het zwembad ontruiming. Toegevoegd urllib3.PoolManager.clear ().
- 99% - & gt; 100% unit test dekking.
Wat is nieuw in versie 1.4:.
- Minor-AppEngine gerelateerde fixes
- Switched van mimetools.choose_boundary tot uuid.uuid4 ().
- Verbeterde url parsing. (Issue # 73)
- IPv6 url ondersteuning. (Issue # 72)
Wat is nieuw in versie 1.3:.
- Removed pre-1.0 deprecated API
- refactored helpers in een urllib3.util submodule.
- Vaste multipart-codering ondersteunen lijst-van-tupels voor sleutels met meerdere waarden. (Issue # 48)
- Fixed meerdere Set-Cookie headers in reactie krijgt niet correct samengevoegd in Python 3. (Issue # 53)
- AppEngine ondersteuning met Py27. (Issue # 61)
- Minor encode_multipart_formdata fixes in verband met Python 3 strings vs bytes.
Wat is nieuw in versie 1.2.2:
- Fixed bug verpakking van niet scheepvaart-test-eisen. txt. (Issue # 47)
Wat is nieuw in versie 1.2.1:
- Vast nog een bug in verband met als ssl-module is niet ter beschikking gesteld. (Issue # 41)
- Locatie parseerfouten nu verhogen urllib3.exceptions.LocationParseError die erft van ValueError.
Wat is nieuw in versie 1.2:
- Toegevoegd Python 3 ondersteuning (getest op 3.2.2)
- Dropped Python 2.5 ondersteuning (getest op 2.6.7, 2.7.2)
- Gebruik select.poll plaats van select.select voor platforms die dit ondersteunen.
- Gebruik Queue.LifoQueue plaats van Queue.Queue voor meer agressieve verbinding hergebruik. Configureerbaar door dwingende ConnectionPool.QueueCls.
- Vaste ImportError tijdens installeren wanneer ssl-module is niet beschikbaar. (Issue # 41)
- Vaste Poolmanager doorverwijzingen tussen regelingen (zoals HTTP - & gt; HTTPS) niet goed te voltooien. (Issue # 28, ontdekt door Kwestie # 10 in v1.1)
- Geport dummyserver om tornado gebruiken in plaats van webob + eventlet. Verwijderd vreemde niet-ondersteunde dummyserver testen backends. Toegevoegd socket-niveau testen.
- Meer testen. De voltooiing opende:. 99% dekking
Wat is nieuw in versie 1.1:
- refactored dummyserver om zijn eigen wortel namespace module (gebruikt voor het testen ).
- Toegevoegd hostname verificatie voor VerifiedHTTPSConnection door vendoring in Py32's ssl_match_hostname. (Issue # 25)
- Vaste cross-gastheer HTTP redirects bij het gebruik van Poolmanager. (Issue # 10)
- Vaste decode_content genegeerd wanneer ingesteld via urlopen. (Issue # 27)
- Fixed-time-out gerelateerde bugs. (Problemen # 17, # 23)
Wat is nieuw in versie 1.0.2:
- Vaste typo in VerifiedHTTPSConnection die zou alleen aanwezig als een bug als u handmatig met behulp van het object. (Met dank Pyos)
- Made RecentlyUsedContainer (en dus Poolmanager) meer thread-safe door de verpakking van de toegang log in een mutex. (Met dankchrister)
- Made RecentlyUsedContainer meer dict-achtige (gecorrigeerd __delitem__ en __getitem__ gedrag), en de tests. Mag niet van invloed kern urllib3 code.
Wat is nieuw in versie 1.0.1:
- Fixed a bug waar dezelfde verbinding zou krijgen terug in het zwembad twee keer, waardoor vreemde & quot; HttpConnectionPool vol is & quot; log waarschuwingen.
Eisen
- Python
Reacties niet gevonden