urllib3 connectionpool - пул соединений переполнен, соединение отбрасывается
Видя
urllib3.connectionpool WARNING - Connection pool is full, discarding connection
означает, что я эффективно теряю данные (из-за потери соединения)
ИЛИ ЖЕ
Означает ли это, что соединение разорвано (потому что пул полон); тем не менее, то же самое соединение будет повторено позже, когда пул подключений станет доступным?
2 ответа
Означает ли это, что соединение разорвано (потому что пул полон); тем не менее, то же самое соединение будет повторено позже, когда пул подключений станет доступным?
^ Это правильная интерпретация. Если вы можете придумать более ясную формулировку для этого сообщения, пожалуйста, откройте вопрос с предложением!
Поскольку urllib3 PoolManager повторно использует соединения, он будет ограничивать количество соединений, разрешенных для каждого хоста в любой момент времени, чтобы избежать накопления слишком большого количества неиспользуемых сокетов. Если вы полагаетесь на параллелизм, было бы неплохо увеличить размер до числа потоков, которые вы используете, чтобы каждый поток эффективно получал свое собственное соединение.
Более подробная информация здесь: https://urllib3.readthedocs.io/en/latest/advanced-usage.html
Согласно документации по настройке поведения пула , ни одна из ваших интерпретаций неверна:
По умолчанию, если сделан новый запрос и в пуле нет свободного соединения, будет создано новое соединение. Однако это соединение не будет сохранено, если существует больше, чем maxsize. Это означает, что maxsize не определяет максимальное количество подключений, которые могут быть открыты для конкретного хоста , а только максимальное количество подключений, которые необходимо сохранить в пуле.
(мой акцент)
Таким образом, соединение не было прервано, чтобы повторить попытку позже. Они были сделаны немедленно , как и требовалось, и результаты вернулись. Затем, после их завершения, эти «лишние» соединения отбрасывались, т. Е. Они не сохранялись в пуле для последующего повторного использования.
Например, если ваш