Таймаутите за свързване и четене ограничават определени изчаквания. Те не ограничават непременно цяла операция през прокси, която може да включва също чакане в опашка, DNS, CONNECT, TLS, пренасочвания, повторни опити и изчитане на отговора.

ОграничениеОбхват
Таймаут за свързванеУстановяване на връзката по дефиницията на клиента
Таймаут за бездействие при четенеИзчакване без очакван напредък на данните
Общ краен срокРазрешената продължителност на цялата операция

Започнете с бюджета на операцията

Използвайте документирания общ краен срок или механизъм за отказ на клиента, когато е наличен, заедно с ограниченията по фази. HTTPX разделя изчакванията за пул, свързване, четене и запис. Requests посочва, че неговият таймаут не е ограничение за цялото изтегляне. curl предоставя таймаут за общ трансфер.

Например задача от двадесет секунди изразходва две секунди в опашка, три за установяване на маршрута и шест за неуспешен обмен. Следващият ѝ опит има около девет секунди. Даването на нови двадесет секунди на всеки повторен опит би изхвърлило първоначалния бюджет.

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

Включете тялото и почистването

Метод, който се връща след заглавките, може да остави четенето на тялото извън крайния си срок. Решете дали бюджетът покрива установяването, цяло крайно изтегляне или дълготраен поток с отделни правила за жизненост. Съвременен пример в .NET за отказ на заглавки и тяло пренася един токен през двата етапа.

Оставете време за затваряне на отговорите и завършване на отказа, преди следващ опит да заеме капацитет от пула. Записвайте неуспешната фаза и изминалото време; повтарящите се четения с напредък могат да удовлетворят ограниченията за бездействие, докато цялата работа трае твърде дълго.

Крайният срок на шлюза към горния поток принадлежи на този шлюз. След като върне 504, неизползваният бюджет на клиента не може да удължи завършения опит. Дръжте всеки таймер привързан към собственика му, когато решавате коя настройка трябва да се коригира.

Подобни статии