Тайм-аути етапів і загальний строк проксі-запиту
Відокремте обмеження за етапами від загального бюджету часу операції через проксі, включно з повторними спробами та читанням відповіді.
Тайм-аути з'єднання й читання обмежують окремі очікування. Вони не обов'язково обмежують усю операцію через проксі, до якої також можуть входити очікування в черзі, DNS, CONNECT, TLS, переспрямування, повторні спроби та читання відповіді.
| Обмеження | Сфера дії |
|---|---|
| Тайм-аут з'єднання | Встановлення з'єднання за визначенням клієнта |
| Тайм-аут бездіяльності читання | Очікування без очікуваного поступу даних |
| Загальний строк | Дозволена тривалість усієї операції |
Почніть із бюджету операції
Використовуйте задокументований загальний строк клієнта або механізм скасування, якщо він є, разом з обмеженнями етапів. HTTPX розділяє очікування пулу, з'єднання, читання й запису. Requests зазначає, що його тайм-аут не є обмеженням повного завантаження. curl надає тайм-аут загального передавання.
Наприклад, завдання на двадцять секунд витрачає дві секунди в черзі, три на побудову маршруту й шість на невдалий обмін. Наступна спроба має приблизно дев'ять секунд. Давати кожній повторній спробі свіжі двадцять секунд означало б відкинути початковий бюджет.
Для обліку минулого часу використовуйте монотонний годинник. Передавайте абсолютний строк або залишкову тривалість через шари, що володіють роботою. Якщо зовнішній механізм скасування не може забезпечити потрібну сферу дії, зробіть це обмеження явним.
Включіть тіло й очищення
Метод, що повертається після заголовків, може залишити читання тіла поза своїм строком. Вирішіть, чи бюджет охоплює встановлення, повне скінченне завантаження або довготривалий потік з окремими правилами живучості. Сучасний приклад .NET для скасування заголовків і тіла несе один токен через обидва етапи.
Залиште час на закриття відповідей і завершення скасування, перш ніж наступна спроба займе ємність пулу. Записуйте невдалий етап і минулий час; повторні читання з поступом можуть задовольняти обмеження бездіяльності, поки вся робота триває занадто довго.
Строк шлюзу в бік висхідного вузла належить цьому шлюзу. Після повернення 504 невикористаний бюджет клієнта не може продовжити завершену спробу. Тримайте кожен таймер прив'язаним до його власника, вирішуючи, яке налаштування потрібно виправити.