Пул проксі може перетворити простий збій на зайнятий цикл. Виберіть адресу, зазнайте невдачі, виберіть іншу, знову невдача. Якщо кожна кінцева точка недоступна, бо ваша власна мережа не працює, зміна адрес ніколи не усуває причину.

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

Вирішіть, що заслуговує ще однієї спроби

  • Відмова в з'єднанні проксі може виправдати спробу іншої кінцевої точки.
  • Відповідь призначення потребує власного тлумачення. Отримання помилки HTTP доводить, що якийсь шлях запиту завершився.
  • Збій автентифікації проксі вимагає перевірки кінцевої точки й облікового запису, а не повторного застосування тих самих даних через дедалі довший список.

Зберігайте початковий виняток або статус разом із записом про спробу. Фінальне повідомлення лише з «усі проксі не спрацювали» приховує, чи мали збої взагалі одну причину.

Перевірка стану кожного проксі перед кожним реальним запитом додає ще один запит і все одно не гарантує, що наступний вдасться. Повторно використовуйте недавню інформацію про стан там, де це підходить завданню, а потім дозвольте реальній операції повідомити її власний результат.

Повтор може повторити роботу

Для читання без запису перехід на інший проксі зазвичай простіший за повторне відтворення надсилання. Якщо з'єднання обривається після надсилання покупки або форми, призначення могло вже її обробити. Дотримуйтеся механізму ідемпотентності служби та правил повтору HTTP, перш ніж повторювати роботу.

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

Схожі статті