urllib3 er en Python HTTP-bibliotek med gevind-sikker tilslutning pooling og fil efter støtte.
Højdepunkter:
& Nbsp; * Genbrug den samme socket-forbindelse til flere anmodninger (HTTPConnectionPool)
& Nbsp; * File udstationering (encode_multipart_formdata)
& Nbsp; * Indbygget omdirigering og forsøg (valgfrit)
& Nbsp; * Tråd-safe
Hvad er der galt med urllib og urllib2?
Der er to vigtige funktioner mangler fra Python standard bibliotek: Tilslutning genbruge / sammenlægning og fil udstationering. Det er ikke frygtelig svært at gennemføre disse selv, men det er meget lettere at bruge et modul, der allerede gjorde arbejdet for dig.
Python standard biblioteker urllib og urllib2 har meget lidt at gøre med hinanden. De var designet til at være uafhængig og selvstændig, hver løse et andet anvendelsesområde for problemer, og urllib3 følger i samme retning.
Hvorfor skal jeg ønsker at genbruge forbindelser?
Performance. Når du normalt gør en urllib opkald, en separat socket-forbindelse er oprettet med hver anmodning. Ved at genbruge eksisterende stikkontakter (støttet siden HTTP 1.1), vil anmodningerne tage færre ressourcer på serveren ende, og også give en hurtigere responstid på kundens ende. Med nogle enkle benchmarks (se test / benchmark.py), downloade 15 URL'er fra google.com er omkring dobbelt så hurtig, når du bruger HTTPConnectionPool (som bruger 1 forbindelse) end at bruge almindelig urllib (som bruger 15-forbindelser).
Dette bibliotek er perfekt til:
& Nbsp; * At tale med en API
& Nbsp; * Gennemgang en hjemmeside
& Nbsp; * Enhver situation, hvor at kunne skrive filer, håndtere omdirigering, og prøver igen er nyttig. Det er relativt let, så det kan bruges til noget!
Eksempler:
Gå til eksempler wiki for mere pæne syntaks-fremhævet eksempler.
Men lang historie kort:
fra urllib3 import HTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web'
http_pool = HTTPConnectionPool.from_url (API_URL)
felter = {'v «:» 1.0 «,» q «:» urllib3'}
r = http_pool.get_url (API_URL, marker)
print r.status, r.data p>
Hvad er nyt i denne udgivelse:
- Tilføjet urllib3.add_stderr_logger () for hurtigt muliggør STDERR debug logging i urllib3.
- Native fuld URL parsing (herunder auth, sti, forespørgsel, fragment) til rådighed i urllib3.util.parse_url (URL).
- Indbygget redirect skifter metode til at 'get', hvis status kode er 303. (Issue # 11)
- urllib3.PoolManager strimler ordningen og vært, før du sender anmodningen uri. (Issue # 8)
- Ny urllib3.exceptions.DecodeError undtagelse for når automatisk afkodning, baseret på Content-Type header, mislykkes.
- Fixed bug med pool udtynding og utætte forbindelser (Issue # 76). Tilføjet eksplicit forbindelse lukning på pool udsættelse. Tilføjet urllib3.PoolManager.clear ().
- 99% - & gt; 100% unit test dækning.
Hvad er nyt i version 1.4:.
- Mindre AppEngine-rettelser
- skiftet fra mimetools.choose_boundary til uuid.uuid4 ().
- Forbedret url parsing. (Issue # 73)
- IPv6 url support. (Issue # 72)
Hvad er nyt i version 1.3:.
- Fjernet pre-1.0 forældet API
- refactored hjælpere i en urllib3.util undermodul.
- Fast multipart kodning at støtte listen-over-tupler til nøgler med flere værdier. (Issue # 48)
- Faste flere Set-Cookie-headere i svar ikke blive fusioneret korrekt i Python 3. (Issue # 53)
- AppEngine support med Py27. (Issue # 61)
- Mindre encode_multipart_formdata rettelser relateret til Python 3 strenge vs bytes.
Hvad er nyt i version 1.2.2:
- Fast emballage bug af ikke skibsfarten test-krav. txt. (Issue # 47)
Hvad er nyt i version 1.2.1:
- Fast anden fejl relateret til når ssl modul er ikke tilgængelige. (Issue # 41)
- Beliggenhed parsing fejl nu hæve urllib3.exceptions.LocationParseError der arver fra ValueError.
Hvad er nyt i version 1.2:
- Tilføjet Python 3 support (testet på 3.2.2)
- Faldt Python 2.5 support (testet på 2.6.7, 2.7.2)
- Brug select.poll stedet for select.select for platforme, der understøtter det.
- Brug Queue.LifoQueue stedet for Queue.Queue for mere aggressiv tilslutning genbrug. Kan konfigureres i tvingende ConnectionPool.QueueCls.
- Fast ImportError under installationen når ssl modul er ikke tilgængelig. (Issue # 41)
- Fast PoolManager omdirigerer mellem ordninger (såsom HTTP - & gt; HTTPS) ikke gennemfører korrekt. (Issue # 28, afsløret ved Issue # 10 i v1.1)
- Ported dummyserver at bruge tornado i stedet for webob + eventlet. Fjernede uvedkommende ikke-understøttede dummyserver test backends. Tilføjet socket-level test.
- Flere tests. Achievement Unlocked:. 99% dækning
Hvad er nyt i version 1.1:
- refactored dummyserver sin egen rod namespace modul (bruges til test ).
- Tilføjet værtsnavn verifikation for VerifiedHTTPSConnection ved vendoring i Py32 s ssl_match_hostname. (Issue # 25)
- Fast tværs host HTTP-omdirigeringer, når du bruger PoolManager. (Issue # 10)
- Fast decode_content bliver ignoreret når den er indstillet via urlopen. (Issue # 27)
- Faste timeout-relaterede bugs. (Spørgsmål # 17, # 23)
Hvad er nyt i version 1.0.2:
- Fast slåfejl i VerifiedHTTPSConnection der ville kun til stede som en bug hvis du bruger objektet manuelt. (Tak pyos)
- Made RecentlyUsedContainer (og dermed PoolManager) mere tråd-safe ved at vikle adgang loggen i en mutex. (Takchrister)
- Made RecentlyUsedContainer mere dict-lignende (korrigeret __delitem__ og __getitem__ adfærd), med tests. Bør ikke påvirke core urllib3 kode.
Hvad er nyt i version 1.0.1:
- Rettet en fejl, hvor den samme forbindelse ville få tilbage i puljen to gange, hvilket uvedkommende & quot; HttpConnectionPool er fuld & quot; log advarsler.
Krav :
- Python
Kommentarer ikke fundet