Γιατί το Requests ανοίγει περισσότερες συνδέσεις από το pool_maxsize
Χρησιμοποιήστε το pool_block για ένα φραγμένο pool και προσθέστε έναν προϋπολογισμό εφαρμογής όταν το όριο πρέπει να καλύπτει όλη την κίνηση μέσω διαμεσολαβητή.
Με την προεπιλογή pool_block=False, το pool_maxsize περιορίζει τις συνδέσεις που διατηρούνται σε ένα pool, όχι κάθε ταυτόχρονη σύνδεση. Το Requests μπορεί να δημιουργεί επιπλέον και να τις απορρίπτει μετά.
Για ένα φραγμένο pool που χρησιμοποιούν τα αιτήματα HTTPS μιας υπάρχουσας συνεδρίας:
from requests.adapters import HTTPAdapter
adapter = HTTPAdapter(
pool_connections=10,
pool_maxsize=4,
pool_block=True,
)
session.mount("https://", adapter)Η προσάρτηση επιλέγει τα URL προορισμού HTTPS. Τα αιτήματα HTTP χρησιμοποιούν τον προσαρμογέα που έχει προσαρτηθεί στο http://.
| Είσοδος | Τι ελέγχει |
|---|---|
| pool_connections | Πόσα pool αποθηκεύει στην κρυφή μνήμη ο διαχειριστής |
| pool_maxsize | Συνδέσεις μέσα σε ένα pool |
| pool_block=True | Αναμονή για σύνδεση από το pool αντί δημιουργίας επιπλέον |
Το Requests αποθηκεύει επίσης διαχειριστές διαμεσολαβητών ανά URL διαμεσολαβητή. Αυτές οι τιμές δεν αποτελούν ένα συνολικό όριο για μια περιστρεφόμενη λίστα διαμεσολαβητών και προορισμών. Χρησιμοποιήστε προϋπολογισμό ταυτοχρονίας σε επίπεδο εφαρμογής αν η απαίτηση είναι όλη η εργασία να περνά από έναν ενδιάμεσο.
Ο αποκλεισμός καθιστά απαραίτητη την απελευθέρωση των απαντήσεων: καταναλώστε τα σώματα ή κλείστε τις απαντήσεις ροής ώστε να μπορεί να προχωρήσει η εργασία που περιμένει. Ο προσαρμογέας του Requests δεν παρέχει ξεχωριστό χρονικό όριο για αυτή την αναμονή του pool στη διάταξη που φαίνεται.