urllib3 yra Python HTTP biblioteka su sriegiu saugus ryšys telkimo ir byla po paramos.
renginiai:
& Nbsp; * Pakartokite naudoti tą patį elektros tinklo lizdą keliems prašymų (HTTPConnectionPool)
& Nbsp; * Failų komandiravimo (encode_multipart_formdata)
& Nbsp; * Built-in peradresavimo ir pakartojimų (neprivaloma)
& Nbsp; * Tema saugus
Kas yra negerai su urllib ir urllib2?
Yra du pagrindiniai bruožai dingę iš Python standartinėje bibliotekoje: Prijungimas vėl naudojant / telkimo ir failų siuntimo. Tai nėra labai sunku įgyvendinti šias save, bet tai daug lengviau naudoti modulį, kuris jau padarė darbą už jus.
Python standartinių bibliotekų urllib ir urllib2 turi mažai ką bendro viena su kita. Jie buvo sukurta siekiant būti nepriklausoma ir atskira, kiekvienas sprendžiant kitą sritį problemas ir urllib3 taip panašiai veną.
Kodėl aš noriu pakartotinai jungtis?
Veiklos. Kai jūs paprastai padaryti urllib skambutį, atskiras lizdo jungtis yra sukurtas su kiekvienu prašymu. Išnaudodami esamas lizdai (palaiko nuo HTTP 1.1), prašymai užims mažiau išteklių serveryje pabaigoje, o taip pat suteikia greitesnį atsako laiką prie kliento pabaigoje. Su keletą paprastų gaires (žr testas / benchmark.py), parsisiuntimas 15 URL iš google.com yra apie du kartus taip greitai, naudojant HTTPConnectionPool (kuri naudoja 1 jungtis), nei naudojant paprastą urllib (kuris naudoja 15 jungtis).
Ši biblioteka yra puikus:
& Nbsp; * Pokalbis su API
& Nbsp; * Crawling svetainę
& Nbsp; * Bet situacija, kai galėtų rašyti failus, tvarkyti nukreipimą ir bandymas kartojamas yra naudinga. Tai gana lengvas, todėl jis gali būti naudojamas viskam!
pavyzdžiai:
Eiti į Pavyzdžiai wiki už daugiau gražus sintaksės-pabrėžė pavyzdžių.
Bet ilga istorija trumpa:
nuo urllib3 importo HTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web "
http_pool = HTTPConnectionPool.from_url (API_URL)
laukai = {"prieš": "1.0", "q": "urllib3"}
r = http_pool.get_url (API_URL, laukai)
Spausdinti r.status, r.data p>
Kas naujo , šioje laidoje:
- Pridėta urllib3.add_stderr_logger (), kad greitai leidžianti STDERR žurnalo derinimo urllib3.
- Gimtoji pilnas adresas apdorojant (įskaitant auth, keliu, užklausos, fragmentas) Yra urllib3.util.parse_url (URL).
- Įmontuoti peradresavimo pereis metodą "GET", jei padėtis kodas yra 303. (išdavimas # 11)
- urllib3.PoolManager juostelės sistemą ir priimančiosios Prieš siųsdami užklausos URI. (Problemų # 8)
- Nauja urllib3.exceptions.DecodeError išimtis, kai automatinis dekodavimo, remiantis Content-Type antraštės, nepavyksta.
- Ištaisyta klaida su baseinu išeikvojimo ir nesandarus jungtys (išdavimas # 76). Pridėta aiškų ryšį uždarymo baseinas iškeldinimo. Pridėta urllib3.PoolManager.clear ().
- 99% - & gt; 100% vieneto testas aprėptis.
Kas naujo versija 1.4:.
- Nedideli AppEngine susijusių pataisymai
- perėjo nuo mimetools.choose_boundary į uuid.uuid4 ().
- Geresnis URL apdorojant. (Problemų # 73)
- IPv6 url palaikymas. (Problemų # 72)
Kas naujo versijoje 1.3:.
- Pašalinta iš anksto 1.0 pasmerkta API
- išimant pagalbininkai į tam urllib3.util submodulis.
- Fiksuotas daugiadalis kodavimas remti sąrašas-of-kortežai raktams su keliais vertybes. (Problemų # 48)
- Fiksuoti kelis Set-Cookie antraštes atsakant negauna susijungė tinkamai Python 3 (išdavimas # 53)
- AppEngine parama su Py27. (Problemų # 61)
- Nedideli encode_multipart_formdata pataisymai, susiję su Python 3 stygos vs baitų.
Kas naujo 1.2.2 versija:
- Fiksuotas pakavimas klaidą nedaryti bandymo-reikalavimus. txt. (Problemų # 47)
Kas naujo versijos 1.2.1:
- Fiksuotas kitą klaidą, susijusią su kai SSL modulis nėra prieinama. (Problemų # 41)
- Vieta Analizuojami klaidų dabar kelti urllib3.exceptions.LocationParseError kuris paveldi iš ValueError.
Kas naujo 1.2 versijoje:
- Pridėta Python 3 parama (išbandytas 3.2.2)
- Sumažėjo Python 2.5 palaikymas (išbandytas 2.6.7, 2.7.2)
- Naudoti select.poll vietoj select.select platformoms, kurios palaiko tai.
- Naudoti Queue.LifoQueue vietoj Queue.Queue daugiau agresyviai ryšio pakartotinai. Įprastiniai privalomaisiais ConnectionPool.QueueCls.
- Fiksuotas ImportError metu įdiegti kai SSL modulis nėra. (Problemų # 41)
- Fiksuotas PoolManager nukreipimus tarp sistemų (pavyzdžiui, HTTP - & gt; HTTPS) netinkamai atlikti. (Problemų # 28, atidengta Išleidimo # 10 v1.1)
- perkeltas dummyserver naudoti tornadas vietoj webob + eventlet. Pašalintos pašaliniai nepagrįstus dummyserver testavimo backends. Pridėta lizdas lygio testai.
- Daugiau testai. Pasiekimas atrakinta:. 99% aprėptis "
Kas naujo 1.1 versijoje:
- išimant dummyserver į savo šaknis vardų modulio (naudojami bandymams ).
- Pridėta prieglobos patikra VerifiedHTTPSConnection iki vendoring į Py32 anketa ssl_match_hostname. (Problemų # 25)
- Fiksuotas kryžminio priimančiosios HTTP nukreipimus naudojant PoolManager. (Problemų # 10)
- Fiksuotas decode_content ignoruojamas, kai nustatytas per urlopen. (Problemų # 27)
- Fiksuoti timeout susijusių klaidų. (Klausimai # 17, # 23)
Kas naujo versijos 1.0.2:
- Fiksuotas klaidos ir VerifiedHTTPSConnection kurie būtų pateikti tik kaip klaidą, jei jūs naudojate objektą rankiniu būdu. (Ačiū Pyos)
- Pagamintas RecentlyUsedContainer (ir dėl to PoolManager) daugiau sriegis saugus vyniojimo prieigos žurnalą į unikalų identifikatorių. (Ačiūchrister)
- Pagamintas RecentlyUsedContainer daugiau dict-kaip (pataisyta __delitem__ ir __getitem__ elgesys), su bandymus. Neturėtų paveikti pagrindinę urllib3 kodą.
Kas naujo versijos 1.0.1:
- Ištaisyta klaida, kai pats ryšys būtų gauti grįžo į baseiną du kartus, todėl pašalinio & quot; HttpConnectionPool yra pilnas & quot; prisijungti įspėjimus.
Reikalavimai :
- Python
Komentarai nerastas