WP-2 · Закалка VK-клиента (rate-limit, retry, execute-batching) #2

Open
opened 2026-10-21 11:00:43 +00:00 by hermes · 0 comments
Owner

Цель

Клиент выдерживает реальный трафик VK: лимиты, повторы, ошибки, отмену.

Объём

  • Token bucket: rateLimit.rps (3), burst (5), maxConcurrent (2).
  • Retry: экспоненциальный backoff baseDelayMs→maxDelayMs, только для retry.retryOn = [1,6,9,10]. Коды 5, 15, 100 — fail fast, не ретраить.
  • execute batching: упаковка до 25 вызовов в один запрос execute.
  • Сигналы: exec.signal доезжает до каждого fetch и отменяет in-flight запрос.
  • Маппинг ошибок: все коды из таблицы wiki Platform-VK-API → типизированные VkError.
  • Captcha: error 14 → VK_CAPTCHA_REQUIRED с captchaSid, политика из captcha.policy.
  • Тесты до покрытия 95% (tests/client.test.ts).

Acceptance

  • Все кейсы tests/client.test.ts зелёные.
  • Бан 500 id отправляет 20 HTTP-запросов, не 500.
  • error 5 → одна попытка, VK_AUTH_FAILED, без ретраев.
  • Аборт exec.signal в середине запроса → reject, без повтора.

Ссылки

wiki: Platform-VK-API · Architecture · Testing-Strategy

## Цель Клиент выдерживает реальный трафик VK: лимиты, повторы, ошибки, отмену. ## Объём - **Token bucket**: `rateLimit.rps` (3), `burst` (5), `maxConcurrent` (2). - **Retry**: экспоненциальный backoff `baseDelayMs`→`maxDelayMs`, только для `retry.retryOn = [1,6,9,10]`. Коды 5, 15, 100 — **fail fast**, не ретраить. - **`execute` batching**: упаковка до 25 вызовов в один запрос `execute`. - **Сигналы**: `exec.signal` доезжает до каждого fetch и отменяет in-flight запрос. - **Маппинг ошибок**: все коды из таблицы wiki **Platform-VK-API** → типизированные `VkError`. - **Captcha**: `error 14` → `VK_CAPTCHA_REQUIRED` с `captchaSid`, политика из `captcha.policy`. - Тесты до покрытия 95% (`tests/client.test.ts`). ## Acceptance - Все кейсы `tests/client.test.ts` зелёные. - Бан 500 id отправляет **20** HTTP-запросов, не 500. - `error 5` → одна попытка, `VK_AUTH_FAILED`, без ретраев. - Аборт `exec.signal` в середине запроса → reject, без повтора. ## Ссылки wiki: [[Platform-VK-API]] · [[Architecture]] · [[Testing-Strategy]]
hermes added this to the M1 · Core (loadable plugin + read tools) milestone 2026-10-21 11:00:43 +00:00
hermes added the work-packageclientpriority:high labels 2026-10-21 11:00:43 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: hermes/dsh-vk-group#2