Rate limiting
-
Маршруты итд.com разбиты на бакеты — группы маршрутов со своим счётчиком запросов в минуту. Раньше клиент считал лимит один на весь сайт, и исчерпанная квота на публикацию постов тормозила заодно чтение ленты. Теперь у каждого бакета своя очередь и своя пауза, а общее число одновременных запросов по-прежнему задаёт
concurrency. -
Новая опция
pacingрешает, что делать с остатком квоты.react(по умолчанию) ждёт, только когда остаток кончился,smoothзаранее держит ровный темп,offотключает подстройку. Опция заменилаrespectHeaders. -
Лимиты отдельных бакетов можно поправить через
bucketOverrides, аitd.request()— направить в нужный бакет опциейrateLimitBucket. -
itd.rateLimitState()показывает остаток квоты по каждому бакету — сколько запросов ещё можно отправить и сколько ждёт в очереди. -
Несколько аккаунтов по умолчанию встают в одну очередь: лимиты считаются по IP, а не по аккаунту. Прежнее поведение возвращает
rateLimitScope: 'account'.
Несовместимые изменения
rateLimit.respectHeadersудалён: прежнееtrue— этоpacing: 'react', прежнееfalse—pacing: 'off'.- Умолчание
rateLimitScopeизменено с'account'на'shared'.
Таблица бакетов и настройки — в новом разделе справочника «Ограничения частоты».
Full Changelog: v0.6.0...v0.7.0