urllib3 jest biblioteka Pythona HTTP z puli połączeń wątku bezpieczny i wsparcia plik postu.
Najważniejsze cechy:
& Nbsp; * ponownie korzystać z tego samego połączenia z gniazdem dla wielu wniosków (HTTPConnectionPool)
& Nbsp; * wpis pliku (encode_multipart_formdata)
& Nbsp; * Wbudowany w przekierowania i prób (opcjonalnie)
& Nbsp; * bezpieczny wątku
Co jest nie tak z urllib i urllib2?
Istnieją dwa najważniejsze cechy brakuje w standardowej biblioteki Pythona: Połączenie ponownego wykorzystania / łączenie i plików delegowania. To nie jest strasznie trudne do wdrożenia ich samemu, ale to o wiele łatwiejsze w użyciu moduł, który już zrobił to za Ciebie.
W Pythonie standardowych bibliotek urllib i urllib2 mają niewiele ze sobą. Zostały one zaprojektowane tak, aby być niezależny i samodzielny, każde rozwiązanie inny zakres problemów i urllib3 następuje w podobnym duchu.
Dlaczego chcesz ponownie użyć połączenia?
Wydajność. Gdy robisz to połączenie urllib, oddzielne połączenie z gniazdem jest tworzony z każdego żądania. Dzięki ponownemu wykorzystaniu istniejących gniazd (obsługiwane od HTTP 1.1), wnioski zajmie mniej zasobów na koniec serwera, a także szybszy czas reakcji na koniec klienta. Z kilku prostych wskaźników (patrz test / benchmark.py), pobierając 15 adresów URL z google.com jest około dwa razy szybciej przy użyciu HTTPConnectionPool (który wykorzystuje 1 połączenie), niż przy użyciu zwykłego urllib (który wykorzystuje 15 połączeń).
Biblioteka ta jest idealna dla:
& Nbsp; * Rozmowa z API
& Nbsp; * Crawling stronę internetową
& Nbsp; * Każda sytuacja, w której jest w stanie opublikować pliki, obsługiwać przekierowywanie i ponowienie jest przydatna. Jest stosunkowo lekki, dzięki czemu może być używany do niczego!
Przykłady:
Idź do wiki przykłady kilku ładnych przykładów z podświetlaniem składni.
Ale, krótko mówiąc:
z urllib3 importu HTTPConnectionPool
API_URL = "http://ajax.googleapis.com/ajax/services/search/web"
http_pool = HTTPConnectionPool.from_url (API_URL)
pola = {'v': '1.0', 'q': 'urllib3'}
r = http_pool.get_url (API_URL, pola)
drukuj r.status, r.data p>
Co nowego w tym wydaniu:
- Dodane urllib3.add_stderr_logger () na szybko umożliwiając rejestrowanie debugowania stderr w urllib3.
- Język pełny adres URL parsowania (w tym auth, ścieżka, zapytania, fragment) dostępnych w urllib3.util.parse_url (URL).
- Wbudowana przekierowania przełączy metody "GET", jeżeli kod stanu jest 303. (Wydanie nr 11)
- urllib3.PoolManager paski schemat i gospodarza przed wysłaniem żądania uri. (Wydanie nr 8),
- New urllib3.exceptions.DecodeError wyjątkiem, gdy automatyczne dekodowania na podstawie nagłówka Content-Type nie.
- Naprawiono błąd z wyczerpaniem puli i nieszczelnych połączeń # 76 (wydanie). Dodano wyraźne połączenie zamknięcia na basenie eksmisji. Dodane urllib3.PoolManager.clear ().
- 99% - & gt; 100% testy jednostkowe.
Co nowego w wersji 1.4.
- Drobne poprawki związane AppEngine,
- Switched z mimetools.choose_boundary do uuid.uuid4 ().
- Zwiększona url analizowania. (Wydanie nr 73)
- Wsparcie url IPv6. (Wydanie nr 72)
Co nowego w wersji 1.3.
- Usunięto sprzed 1,0 przestarzałe API
- refactored pomocnicy w submodule urllib3.util.
- Poprawiono kodowanie wieloczęściowy do obsługi list-of-krotki do kluczy z wielu wartości. (Wydanie nr 48)
- Poprawiono wiele nagłówków Set-Cookie w odpowiedzi na nie coraz połączone prawidłowo w Pythonie 3. (wydanie nr 53)
- Wsparcie AppEngine z Py27. (Wydanie nr 61)
- Drobne poprawki encode_multipart_formdata związane z python 3 ciągi vs bajtów.
Co nowego w wersji 1.2.2:
- Naprawiono błąd opakowanie nie wysyłać wymagań testowych. tekst. (Wydanie nr 47)
Co nowego w wersji 1.2.1:
- Poprawiono błąd związany z innym, gdy nie ma modułu ssl dostępne. (Wydanie nr 41)
- Lokalizacja błędy analizy teraz podnieść urllib3.exceptions.LocationParseError która dziedziczy ValueError.
Co nowego w wersji 1.2:
- Dodane Python 3 wsparcie (testowane na 3.2.2)
- Wypada Python 2.5 Wsparcie (testowane na 2.6.7, 2.7.2),
- Użyj select.poll zamiast select.select dla platform, które go obsługują.
- Użyj Queue.LifoQueue zamiast Queue.Queue dla bardziej agresywnej ponownego użycia połączenia. Konfigurowalny nadrzędnymi ConnectionPool.QueueCls.
- Poprawiono ImportError podczas instalacji, gdy moduł SSL nie jest dostępny. (Wydanie nr 41)
- Poprawiono PoolManager przekierowania między systemami (takimi jak HTTP - & gt; HTTPS) nie kończą prawidłowo. (Wydanie nr 28, odkryte przez Emisji # 10 w wersji 1.1),
- Przeportowany dummyserver używać tornado zamiast webob + eventlet. Usunięto obce nieobsługiwane backendy testowania dummyserver. Testy Dodano poziomie gniazda.
- Więcej testów. Achievement Unlocked:. 99% pokrycia,
Co nowego w wersji 1.1:
- refactored dummyserver do własnej przestrzeni nazw modułu głównego (używane do badań ).
- Dodane weryfikacji nazwa hosta VerifiedHTTPSConnection przez vendoring w ssl_match_hostname Py32 za. (Wydanie nr 25)
- Poprawiono HTTP cross-gospodarza przekierowania podczas korzystania PoolManager. (Wydanie nr 10)
- Poprawiono decode_content są ignorowane, gdy ustawiony przez urlopen. (Wydanie nr 27)
- Poprawiono błędy związane Timeout-. (Zagadnienia # 17, # 23)
Co nowego w wersji 1.0.2:
- Naprawiono błąd w VerifiedHTTPSConnection które przedstawia jedynie jako bug jeśli ręcznie przy użyciu obiektu. (Dziękuję pyos)
- Wykonane RecentlyUsedContainer (aw konsekwencji PoolManager) bardziej bezpieczny wątku przez owinięcie dziennik dostępu w mutex. (Dziękichrister)
- Wykonane RecentlyUsedContainer więcej dict-podobne (poprawione __delitem__ i __getitem__ zachowanie), z badań. Nie powinien mieć wpływu rdzenia kod urllib3.
Co nowego w wersji 1.0.1:
- Naprawiono błąd, gdzie sama gra dostanie zwrócony w basenie dwa razy, powodując obce & quot; HttpConnectionPool jest pełna & quot; ostrzeżenia zalogować.
Wymagania :
- Python
Komentarze nie znaleziono