urllib3 είναι μια βιβλιοθήκη Python HTTP με νήμα-ασφαλή σύνδεση συγκέντρωση και μετα υποστήριξη αρχείων.
Χαρακτηριστικά:
& Nbsp? * Re-χρησιμοποιούν την ίδια υποδοχή σύνδεσης για πολλαπλά αιτήματα (HTTPConnectionPool)
& Nbsp? * Απόσπαση αρχείου (encode_multipart_formdata)
& Nbsp? * Built-in ανακατεύθυνση και επαναλήψεων (προαιρετικό)
& Nbsp? * Thread ασφαλή
Τι συμβαίνει με urllib και urllib2;
Υπάρχουν δύο κρίσιμα χαρακτηριστικά λείπουν από την πρότυπη βιβλιοθήκη της Python: Σύνδεση της επαναχρησιμοποίησης / συγκέντρωση και το αρχείο απόσπαση. Δεν είναι τρομερά δύσκολο να τις υλοποιήσει τον εαυτό σας, αλλά είναι πολύ πιο εύκολο να χρησιμοποιήσετε μια μονάδα που ήδη έκανε τη δουλειά για σας.
Οι Python πρότυπο βιβλιοθήκες urllib και urllib2 δεν έχουν καμία σχέση με το άλλο. Είχαν σχεδιαστεί ώστε να είναι ανεξάρτητο και αυτόνομο, το καθένα να λύσει ένα διαφορετικό πεδίο των προβλημάτων, και urllib3 ακολουθεί στο ίδιο πνεύμα.
Γιατί θέλετε να χρησιμοποιήσετε ξανά τις συνδέσεις;
Απόδοση. Όταν κάνετε συνήθως μια κλήση urllib, μια ξεχωριστή υποδοχή σύνδεσης δημιουργείται με κάθε αίτημα. Με την επαναχρησιμοποίηση των υφιστάμενων υποδοχές (που υποστηρίζεται από το HTTP 1.1), οι αιτήσεις θα διαρκέσει έως λιγότερους πόρους στο τέλος του server, και επίσης να παρέχει ένα ταχύτερο χρόνο απόκρισης στο τέλος του πελάτη. Με μερικά απλά σημεία αναφοράς (βλ δοκιμή / 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)
πεδία = {«ν»: «1,0», «Q»: «urllib3 '}
r = http_pool.get_url (API_URL, πεδία)
r.status εκτύπωσης, r.data p>
Τι είναι καινούργιο σε αυτήν την έκδοση:
- Προστέθηκε urllib3.add_stderr_logger () για γρήγορα επιτρέποντας STDERR καταγραφής εντοπισμού σφαλμάτων σε urllib3.
- Native πλήρη διεύθυνση URL parsing (συμπεριλαμβανομένων auth, τη διαδρομή, το ερώτημα, τεμάχιο) διατίθεται σε urllib3.util.parse_url (url).
- Built-in ανακατεύθυνσης θα αλλάξει τη μέθοδο να «πάρει» εάν ο κωδικός κατάστασης είναι 303. (Τεύχος # 11)
- urllib3.PoolManager ταινίες του καθεστώτος και υποδοχής πριν από την αποστολή της αίτησης URI. (Τεύχος # 8)
- Νέα urllib3.exceptions.DecodeError εξαίρεση για όταν η αυτόματη αποκωδικοποίηση, με βάση την επικεφαλίδα Content-Type, αποτυγχάνει.
- Διορθώθηκε το bug με εξάντληση πισίνα και στεγανών συνδέσεων (Τεύχος # 76). Προστέθηκε ρητή σύνδεση στο κλείσιμο της πισίνας έξωση. Προστέθηκε urllib3.PoolManager.clear ().
- 99% - & gt? 100% κάλυψη δοκιμή μονάδα.
Τι είναι καινούργιο στην έκδοση 1.4:.
- Μικρά διορθώσεις AppEngine που σχετίζονται με
- Switched από mimetools.choose_boundary να uuid.uuid4 ().
- Βελτιωμένη URL ανάλυσης. (Τεύχος # 73)
- IPv6 υποστήριξη url. (Τεύχος # 72)
Τι είναι καινούργιο στην έκδοση 1.3:.
- Αφαιρέθηκε προ-1,0 αποδοκιμαστεί API
- refactored βοηθοί σε μια υποενότητα urllib3.util.
- Σταθερή πολλά μέρη κωδικοποίηση να υποστηρίξει τη λίστα-των-πλειάδες για κλειδιά με πολλαπλές τιμές. (Τεύχος # 48)
- Σταθερή πολλαπλές κεφαλίδες Set-Cookie σε απάντηση να μην πάρει συγχωνεύονται σωστά στην Python 3. (Τεύχος # 53)
- υποστήριξη AppEngine με Py27. (Τεύχος # 61)
- Μικρά διορθώσεις encode_multipart_formdata που σχετίζονται με την Python 3 χορδές vs bytes.
Τι είναι καινούργιο στην έκδοση 1.2.2:
- Fixed bug συσκευασία που δεν στέλνει δοκιμών απαιτήσεις. κείμενο. (Τεύχος # 47)
Τι είναι καινούργιο στην έκδοση 1.2.1:
- Διορθώθηκε ένα άλλο bug σχετικά με το πότε ενότητα SSL δεν είναι στη διάθεσή. (Τεύχος # 41)
- Τοποθεσία σφάλματα ανάλυσης εγείρουν τώρα urllib3.exceptions.LocationParseError που κληρονομεί από ValueError.
Τι είναι καινούργιο στην έκδοση 1.2:
- Προστέθηκε Python 3 υποστήριξης (δοκιμαστεί σε 3.2.2)
- Αποσύρεται Python 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)
- Ported dummyserver να χρησιμοποιήσετε ανεμοστρόβιλος αντί webob + eventlet. Αφαιρέθηκε ξένοι δεν υποστηρίζονται τα backend δοκιμών dummyserver. Δοκιμές Προστέθηκε υποδοχή-επίπεδο.
- Περισσότερες δοκιμές. Achievement Unlocked:. 99% Κάλυψη
Τι είναι καινούργιο στην έκδοση 1.1:
- refactored dummyserver σε μονάδα τη δική ρίζα του χώρου ονομάτων (που χρησιμοποιείται για τη δοκιμή ).
- Προστέθηκε επαλήθευση όνομα για VerifiedHTTPSConnection από vendoring σε ssl_match_hostname Py32 του. (Τεύχος # 25)
- Σταθερή cross-ξενιστή HTTP ανακατευθύνει όταν χρησιμοποιούν PoolManager. (Τεύχος # 10)
- Σταθερή decode_content αγνοούνται όταν ρυθμιστεί μέσω urlopen. (Τεύχος # 27)
- Σταθερή σφάλματα χρονικού ορίου που σχετίζονται. (Θέματα # 17, # 23)
Τι είναι καινούργιο στην έκδοση 1.0.2:
- Διορθώθηκε τυπογραφικό λάθος στο VerifiedHTTPSConnection στην οποία θα παρουσιάζεται μόνο ως bug αν χρησιμοποιείτε το αντικείμενο με το χέρι. (Ευχαριστώ pyos)
- Made RecentlyUsedContainer (και, κατά συνέπεια, PoolManager) περισσότερο νήμα-ασφαλή, τυλίγοντας το αρχείο καταγραφής πρόσβασης σε ένα mutex. (Χάρηchrister)
- Made RecentlyUsedContainer περισσότερα dict-σαν (διορθωμένη __delitem__ και __getitem__ συμπεριφορά), με δοκιμές. Δεν θα πρέπει να επηρεάζει πυρήνα κωδικό urllib3.
Τι είναι καινούργιο στην έκδοση 1.0.1:
- Διορθώθηκε ένα σφάλμα, όπου η ίδια σύνδεση θα πάρει επέστρεψε στην πισίνα δύο φορές, προκαλώντας ξένα & quot? HttpConnectionPool είναι γεμάτη & quot? συνδεθείτε προειδοποιήσεις.
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε