[CL-FIX-KLINES-UNSUPPORTED-CACHE] Negative cache для неподдерживаемых символов #312

Merged
andrei merged 1 commit from feature/claude-klines-unsupported-cache into master 2026-06-10 16:21:21 +00:00
Owner

Что сделано

  • get_klines: negative cache (symbol, category) на BoundedTTLCache (maxsize 1024, TTL 6ч) — символ, словивший «Not supported symbols», далее скипается на DEBUG без API-вызова.
  • Транзиентные ошибки НЕ кешируются (матч только подстроки not supported symbol).

Зачем

Прод-лог: LABUSDT/PUMPFUNUSDT отсутствуют на Bybit spot → ERROR на каждом scan-цикле навсегда (3×/час на символ × каждый символ из динамических сканов) — спам в log-health и впустую сожжённые API-вызовы из rate-limit бюджета.

План тестирования

  • 4 новых теста: повторный вызов не бьёт API; ERROR логируется один раз, повтор DEBUG; транзиентная ошибка ретраится; category — часть ключа (spot miss ≠ linear miss).
  • Регрессия -k "klines or helpers" — 177 passed. ruff clean.
  • После деплоя: get_klines.*Not supported в логе должен появляться максимум раз в 6ч на символ.

Где могу ошибаться

  • Если Bybit ЗАлистит символ — до 6ч задержка до подхвата (TTL); приемлемо для листингов.
  • Матч по подстроке текста ошибки — если Bybit изменит формулировку, кеш перестанет наполняться (поведение деградирует до текущего, не хуже).
## Что сделано - `get_klines`: negative cache `(symbol, category)` на `BoundedTTLCache` (maxsize 1024, TTL 6ч) — символ, словивший «Not supported symbols», далее скипается на DEBUG без API-вызова. - Транзиентные ошибки НЕ кешируются (матч только подстроки `not supported symbol`). ## Зачем Прод-лог: LABUSDT/PUMPFUNUSDT отсутствуют на Bybit spot → ERROR на каждом scan-цикле навсегда (3×/час на символ × каждый символ из динамических сканов) — спам в log-health и впустую сожжённые API-вызовы из rate-limit бюджета. ## План тестирования - 4 новых теста: повторный вызов не бьёт API; ERROR логируется один раз, повтор DEBUG; транзиентная ошибка ретраится; category — часть ключа (spot miss ≠ linear miss). - Регрессия `-k "klines or helpers"` — 177 passed. ruff clean. - После деплоя: `get_klines.*Not supported` в логе должен появляться максимум раз в 6ч на символ. ## Где могу ошибаться - Если Bybit ЗАлистит символ — до 6ч задержка до подхвата (TTL); приемлемо для листингов. - Матч по подстроке текста ошибки — если Bybit изменит формулировку, кеш перестанет наполняться (поведение деградирует до текущего, не хуже).
[CL-FIX-KLINES-UNSUPPORTED-CACHE] negative cache для неподдерживаемых символов в get_klines
All checks were successful
Arnold Forgejo CI / secret-scan (pull_request) Successful in 3s
Forgejo Smoke Test / Smoke (pull_request) Successful in 1s
Arnold Forgejo CI / frontend-audit (pull_request) Successful in 12s
Arnold Forgejo CI / backend-tests (pull_request) Successful in 4m24s
b5480124ca
Стратегии сканировали символы, отсутствующие в категории Bybit
(LABUSDT/PUMPFUNUSDT на spot) - 'Not supported symbols' ERROR на каждом
scan-цикле, бесконечный спам в логах + впустую сожжённые API-вызовы.

Negative cache (symbol, category) на BoundedTTLCache (maxsize 1024, TTL 6ч -
листинги меняются редко): первый ERROR логируется, повторы скипаются на
DEBUG без API-вызова. Транзиентные ошибки НЕ кешируются (только подстрока
'not supported symbol').

Тесты: 4 новых (no-repeat-api-call, error-once, transient-retry,
category-в-ключе), область klines/helpers 177 passed, ruff clean.
andrei merged commit 26fc573772 into master 2026-06-10 16:21:21 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/arnold-trader-app!312
No description provided.