Używam wnioski z Python Library z sesji:W bibliotece żądań, jak mogę uniknąć ostrzeżenia "HttpConnectionPool jest pełne, odrzucam połączenie"?
def _get_session(self):
if not self.session:
self.session = requests.Session()
return self.session
A czasami dostaję tego ostrzeżenia w moich dziennikach:
[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk
Moje pytanie brzmi: dlaczego tak się ostrzeżenie, a nie wyjątek ?
Jest to kod odpowiedzialny za to (od 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)
Dlaczego ten wyjątek jest przechwycony tutaj? Jeśli zostałby przejęty, mógłbym obsłużyć ten wyjątek w moim kodzie, tworząc nową sesję i usuwając starą.
Jeśli to tylko ostrzeżenie, czy to oznacza, że nie ma to żadnego wpływu na moje wyniki? Czy mogę to zignorować? Jeśli nie, jak mogę sobie z tym poradzić?
Czy próbowałeś ustawić 'self.block' na' True'? – roippi
Czy naprawdę chcę, aby moje żądania zostały zablokowane? Może to ostrzeżenie zniknie, ale czy są jakieś inne konsekwencje? Jest jakiś powód, dla którego nie jest to Prawda domyślna, prawda? – mnowotka
': blok param: Jeśli ustawione na wartość True, nie będzie używanych więcej niż ** maksymalnych ** połączeń na raz. Jeśli nie są dostępne żadne wolne połączenia, połączenie zostanie zablokowane do momentu zwolnienia połączenia. " – roippi