urllib3 היא ספריית פייתון HTTP עם איגום חיבור חוט בטוח ופוסט קובץ תמיכה.
הבהרה:
& Nbsp; * Re-להשתמש באותו חיבור השקע לבקשות מרובות (HTTPConnectionPool)
& Nbsp; * קובץ פרסום (encode_multipart_formdata)
& Nbsp; * Built-in ניתוב מחדש וניסיונות חוזרים (אופציונאלי)
& Nbsp; * חוט בטוח
מה רע בurllib וurllib2?
ישנן שתי תכונות קריטיות חסרות בספרייה הרגילה פייתון: חיבור מחדש באמצעות / איגום ופרסום קובץ. זה לא קשה מאוד ליישם האלה בעצמך, אבל זה הרבה יותר קל להשתמש במודול שכבר עשה את העבודה בשבילך.
יש ספריות Python סטנדרטי urllib וurllib2 הרבה מה לעשות עם זה. הם נועדו להיות עצמאיים ועצמאיים, כל פתרון היקף הבעיות שונה, וurllib3 כדלקמן ברוח דומה.
מדוע אני רוצה לעשות שימוש חוזר בחיבורים?
ביצועים. כאשר אתה עושה בדרך כלל שיחת urllib, חיבור שקע נפרד נוצר עם כל בקשה. על ידי שימוש חוזר שקעים קיימים (נתמכים מאז HTTP 1.1), הבקשות יקחו פחות משאבים בסוף של השרת, וגם מספקות זמן תגובה מהיר יותר בסופו של דבר הלקוח. עם כמה אמות מידה פשוטות (ראה מבחן / benchmark.py), הורדת 15 כתובות URL מgoogle.com היא על מהירות כפולה בעת השימוש HTTPConnectionPool (שמשתמש בחיבור 1) מאשר באמצעות urllib רגיל (המשתמש בחיבורים 15).
ספרייה זו היא מושלמת עבור:
& Nbsp; * בשיחה עם API
& Nbsp; * זחילת אתר
& Nbsp; * כל מצב שבו להיות מסוגל לפרסם קבצים, להתמודד עם ניתוב מחדש, ומנסה שוב שימושי. זה יחסית קל משקל, כך שהוא יכול לשמש לכל דבר!
דוגמאות:
עבור לwiki דוגמאות לדוגמאות-מודגש תחביר נחמדים יותר.
אבל, סיפור ארוך קצר:
מיבוא urllib3 HTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web'
http_pool = HTTPConnectionPool.from_url (API_URL)
השדות = {'נ':, 'q' '1.0': 'urllib3'}
r = http_pool.get_url (API_URL, שדות)
r.status הדפסה, r.data p>
מה חדש בהודעה זו:
- urllib3.add_stderr_logger נוסף () למהירות מאפשר רישום debug stderr בurllib3.
- URL Native מלאה ניתוח (כולל auth, נתיב, שאילתא, בר) זמין בurllib3.util.parse_url (url).
- Built-in הפניה תעבור שיטה ל'GET 'אם קוד מצב הוא 303. (גיליון # 11)
- urllib3.PoolManager רצועות התכנית ומארח לפני שליחת אורי הבקשה. (# גיליון 8)
- . החדש urllib3.exceptions.DecodeError יוצא מן הכלל לכאשר פענוח אוטומטי, המבוסס על כותרת Content-Type, נכשל
- תוקן הבאג עם דלדול בריכה וחיבורים דולפים (גיליון # 76). הוסיף קשר מפורש סגירה על פינוי בריכה. נוסף urllib3.PoolManager.clear ().
- 99% - & gt; 100% כיסוי בדיקה יחידה.
מה חדש בגרסה 1.4:.
- תיקונים הקשורים לAppEngine קטנים
- Switched מmimetools.choose_boundary לuuid.uuid4 ().
- ניתוח url משופר. (גיליון # 73)
- תמיכת url IPv6. (גיליון # 72)
מה חדש בגרסה 1.3:.
- 1.0 מראש API הוסר מיושן
- עוזרי refactored לsubmodule urllib3.util.
- קידוד מרובה קבוע לתמיכה ברשימה-of-tuples למפתחות עם ערכים מרובים. (גיליון # 48)
- כותרות Set-קוקי מרובים קבועות בתגובה לא מקבל מוזג כראוי בPython 3. (גיליון # 53)
- תמיכת AppEngine עם Py27. (גיליון # 61)
- תיקונים קטנים encode_multipart_formdata הקשורים לPython 3 מחרוזות vs הבתים.
מה חדש בגרסת 1.2.2:
- באג אריזה קבועה של לא משלוח בדיקת דרישות. טקסט. (גיליון # 47)
מה חדש בגרסת 1.2.1:
- קבוע באג נוסף הקשורים לכאשר מודול SSL הוא לא זמין. (גיליון # 41)
- שגיאות ניתוח מיקום כעת להעלות urllib3.exceptions.LocationParseError שיורש מValueError.
מה חדש בגרסת 1.2:
- המוסף Python תמיכת 3 (נבדקה על 3.2.2)
- תמיכת ירד פייתון 2.5 (נבדקה על 2.6.7, 2.7.2)
- select.poll שימוש במקום select.select לפלטפורמות שתומכות בה.
- השתמש בQueue.LifoQueue במקום Queue.Queue לשימוש חוזר חיבור אגרסיווי יותר. להגדרה על ידי דריסת ConnectionPool.QueueCls.
- ImportError הקבוע במהלך התקנה כאשר מודול SSL אינו זמין. (גיליון # 41)
- PoolManager הקבוע מפנה בין תוכניות (כגון HTTP - & gt; HTTPS) לא השלימו כראוי. (גיליון # 28, שנחשף על ידי גיליון # 10 בv1.1)
- dummyserver הוסבל- להשתמש טורנדו במקום webob + eventlet. מסדים הוסרו זרים שאינם נתמכים בדיקות dummyserver. בדיקות ברמת שקע נוסף.
- בדיקות נוספות. הישג סמארטפון:. כיסוי 99%
מה חדש בגרסת 1.1:
- refactored dummyserver למודול מרחב שורש שלו (המשמש לבדיקות ).
מה חדש בגרסת 1.0.2:
- טעות דפוס קבוע בVerifiedHTTPSConnection שרק הווה כ באג אם אתה משתמש באובייקט באופן ידני. (Pyos תודה)
מה חדש בגרסת 1.0.1:
- תוקן באג שבו החיבור היה לקבל חזרה לבריכה פעמיים, גורם זר & quot; HttpConnectionPool מלא & quot; יומן אזהרות.
דרישות :
- Python
תגובות לא נמצא