Ich verwende Python-Anfragen Bibliothek Sitzungen:In Requests-Bibliothek, wie kann ich vermeiden "HttpConnectionPool ist voll, Verwerfen der Verbindung" Warnung?
def _get_session(self):
if not self.session:
self.session = requests.Session()
return self.session
Und manchmal erhalte ich diese Warnung in meinem Logs:
[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk
Meine Frage ist: warum diese Warnung und nicht eine Ausnahme ?
Dies ist der Code für diese (von http://pydoc.net/Python/requests/0.8.5/requests.packages.urllib3.connectionpool/):
def _put_conn(self, conn):
try:
self.pool.put(conn, block=False)
except Full:
# This should never happen if self.block == True
log.warning("HttpConnectionPool is full, discarding connection: %s"
% self.host)
Warum diese Ausnahme hier gefangen ist? Wenn es erneut geraist wurde, konnte ich diese Ausnahme in meinem Code behandeln, indem ich eine neue Sitzung erstellte und die alte löschte.
Wenn es nur eine Warnung ist, bedeutet es, dass es meine Ergebnisse in keiner Weise beeinflusst? Kann ich es ignorieren? Wenn nicht, wie kann ich mit dieser Situation umgehen?
haben Sie versucht, 'self.block' auf' True' zu setzen? – roippi
Will ich wirklich meine Anfragen blockieren? Vielleicht wird diese Warnung verschwinden, aber gibt es noch andere Konsequenzen? Es gibt einen Grund, warum das nicht standardmäßig True ist, oder? – mnowotka
': Parameter Block: Wenn auf True gesetzt, werden nicht mehr als ** maxsize ** Verbindungen gleichzeitig verwendet. Wenn keine freien Verbindungen verfügbar sind, wird der Anruf blockiert, bis eine Verbindung freigegeben wurde. – roippi