Пул прокси может превратить простой сбой в занятый цикл. Выберите адрес, неудача, выберите другой, снова неудача. Если каждая конечная точка недоступна, потому что ваша собственная сеть не работает, смена адресов никогда не устранит причину.

Дайте операции бюджет до выбора первого прокси из пула или списка бесплатных прокси: конечное число попыток, ограниченные ожидания соединения и чтения и крайний срок для всей задачи. Тайм-аут Requests управляет своим документированным поведением соединения или чтения; сам по себе он не ограничивает цикл, который продолжает выдавать новые запросы.

Решите, что заслуживает ещё одной попытки

  • Отклонённое соединение через прокси может оправдать попытку другой конечной точки.
  • Ответ пункта назначения требует собственной интерпретации. Получение ошибки HTTP доказывает, что какой-то путь запроса завершился.
  • Сбой аутентификации прокси требует проверки конечной точки и учётной записи, а не долбёжки одними и теми же данными по растущему списку.

Сохраняйте исходное исключение или статус вместе с записью попытки. Финальное сообщение только с «все прокси не сработали» скрывает, была ли у сбоев вообще одна и та же причина.

Проверка здоровья каждого прокси перед каждым реальным запросом добавляет ещё один запрос и всё равно не гарантирует успех следующего. Используйте свежую информацию о здоровье там, где она подходит задаче, а затем позвольте реальной операции сообщить свой собственный результат.

Повторная попытка может повторить работу

При выборке только для чтения переход на другой прокси обычно проще, чем повторное воспроизведение отправки. Если соединение оборвалось после отправки покупки или формы, пункт назначения мог уже её обработать. Соблюдайте механизм идемпотентности сервиса и правила повторных попыток HTTP, прежде чем повторять работу.

Когда бюджет исчерпан, верните полезную ошибку. Задача, которая останавливается с доказательствами, ремонтируется легче, чем та, что тихо крутится, пока кто-нибудь не заметит.

Похожие статьи