urllib3 є бібліотека Python HTTP з поточно-пулу з'єднань і файл повідомленням підтримки.
Основні характеристики:
І NBSP; * Повторне використання же сокет для кількох запитів (HTTPConnectionPool)
І NBSP; * розміщення файлу (encode_multipart_formdata)
І NBSP; * Вбудований перенаправлення і спроб (за бажанням)
І NBSP; * поточно-
Що сталося з URLLIB і urllib2?
Є два важливих особливості, відсутні в стандартній бібліотеці Python: Підключення повторного використання / об'єднання і файлової публікації. Це не дуже складно реалізувати це самостійно, але це набагато простіше у використанні модуль, який вже зробив всю роботу за вас.
В Python стандартні бібліотеки URLLIB і urllib2 мають мало спільного один з одним. Вони були розроблені, щоб бути незалежним та автономним, кожен рішенням інше коло проблем, і urllib3 слід в тому ж дусі.
Чому я хочу, щоб повторно використовувати з'єднання?
Продуктивність. Коли ви зазвичай робите виклик URLLIB, окремий роз'єм підключення створюється при кожному запиті. За повторного використання існуючих розетки (Підтримується, починаючи з HTTP 1.1), запити будуть займати менше ресурсів на кінці сервера, а також забезпечити більш швидкий час відгуку в кінці клієнта. З деяких простих тестів (див випробування / benchmark.py), завантаження 15 URL-адрес з google.com приблизно в два рази швидше при використанні HTTPConnectionPool (який використовує 1 з'єднання), ніж при використанні звичайної URLLIB (який використовує 15 з'єднань).
Ця бібліотека є ідеальним для:
І NBSP; * Говорячи з API
І NBSP; * Сканування веб-сайт
І NBSP; * будь-якій ситуації, де можливість розмістити файли, обробляють перенаправлення і пробують це корисно. Це відносно легкий, тому він може бути використаний для чого-небудь!
Приклади:
Перейти до вікі приклади для більш приємних підсвіченого прикладів.
Але, коротше кажучи:
від urllib3 імпорту HTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web "
http_pool = HTTPConnectionPool.from_url (API_URL)
Поля = {'v': '1.0', 'Q': 'urllib3'}
R = http_pool.get_url (API_URL, поля)
друк r.status, r.data P>
Що нового У цьому випуску:
- Додана urllib3.add_stderr_logger () для швидкого дозволяє STDERR журналу налагодження в urllib3.
- Рідний повний URL розбору (у тому числі авт, шлях, запит, фрагмент), доступних в urllib3.util.parse_url (URL).
- Вбудований перенаправлення буде переключатися метод "GET", якщо код стану 303. (Випуск # 11)
- urllib3.PoolManager позбавляє схему і безліч перед відправкою запиту URI. (Випуск # 8)
- New urllib3.exceptions.DecodeError виняток, коли автоматичного декодування, заснований на заголовку Content-Type, не вдається.
- Виправлена помилка з виснаженням пулу і герметичністю з'єднань (Випуск # 76). Додав явний зв'язок закриттям на басейн виселення. Додано urllib3.PoolManager.clear ().
- 99% - і GT; Охоплення модульного тестування 100%.
Що нового у версії 1.4 :.
- Невеликі AppEngine-Виправлення, пов'язані з
- перейшли від mimetools.choose_boundary в uuid.uuid4 ().
- Покращена гіперпосилання розбору. (Випуск # 73)
- Підтримка IPv6 гіперпосилання. (Випуск # 72)
Що нового у версії 1.3 :.
- Вилучено попередньо 1,0 застарілим API
- реструктурировать помічники в urllib3.util подмодуль.
- Виправлена багатотомний кодування для підтримки Список-оф-кортежі для ключів з кількома значеннями. (Випуск # 48)
- Виправлені кілька заголовків Set-Cookie у відповідь не отримує об'єднані належним чином в Python 3. (Випуск № 53)
- підтримка AppEngine з PY27. (Випуск # 61)
- Невеликі encode_multipart_formdata виправлення, пов'язані з Python 3 рядки в порівнянні байт.
Що нового у версії 1.2.2:
- Виправлена упаковка помилка з немає відправка тест-вимогам. текст. (Випуск # 47)
Що нового у версії 1.2.1:
- Виправлена ще одна помилка, пов'язана з тим, коли модуль SSL НЕ є. (Випуск # 41)
- Місце Розбір помилок зараз підняти urllib3.exceptions.LocationParseError який успадковується від ValueError.
Що нового у версії 1.2:
- 3 Додана підтримка Python (перевірено на 3.2.2)
- Випало 2,5 підтримка Python (перевірено на 2.6.7, 2.7.2)
- Використання select.poll замість select.select для платформ, які підтримують його.
- Використання Queue.LifoQueue замість Queue.Queue для більш агресивного підключення повторного використання. Налаштовується перевизначення ConnectionPool.QueueCls.
- Виправлена ImportError під час установки, коли модуль SSL не доступний. (Випуск # 41)
- Виправлена PoolManager перенаправляє між схемами (наприклад, HTTP - і Гт HTTPS), що не завершили належним чином. (Випуск # 28, розкриті Випуск # 10 в v1.1)
- Портировать dummyserver використовувати торнадо замість WebOb + eventlet. Видалені сторонні непідтримувані dummyserver тестування підсистем. Тести Додав рівня сокета.
- Інші тести. Досягнення розблоковано :. 99% заповненні
Що нового у версії 1.1:
- реструктурировать dummyserver у власному модулі корінь простору імен (використовується для тестування ).
- Додана перевірка хоста для VerifiedHTTPSConnection по vendoring в ssl_match_hostname PY32-х років. (Випуск # 25)
- Виправлена крос-хост HTTP перенаправлення при використанні PoolManager. (Випуск # 10)
- Виправлена decode_content ігнорується при установці через urlopen. (Випуск # 27)
- Виправлені тайм-аут, пов'язаних з помилками. (Питання # 17, # 23)
Що нового у версії 1.0.2:
- Виправлена помилка в VerifiedHTTPSConnection яка присутня тільки в якості помилка, якщо ви використовуєте об'єкт вручну. (Дякуємо пес)
- Made RecentlyUsedContainer (і, отже, PoolManager) більш поточно-обернувши журнал доступу в мьютекса. (Спасібоchrister)
- Made RecentlyUsedContainer більш диктують, як (з поправкою __delitem__ і __getitem__ поведінка), з випробувань. Не повинні впливати на основний код urllib3.
Що нового у версії 1.0.1:
- Виправлена помилка, при якій таке ж підключення б отримати повернутий в басейн два рази, в результаті чого стороннього & Quot; HttpConnectionPool повна і Quot; увійти попередження.
Вимоги
- Python
Коментар не знайдено