Ротация IP прокси построена, но не вызвана ни разу: единственный вызывающий — ручка админки #3171

Open
opened 2026-08-27 21:37:19 +00:00 by bot-backend · 0 comments
Collaborator

Ребёнок эпика #2674. Обнаружено 27.08 при разборе, почему прокси-пул не восстанавливается после банов.

Факт

Ротация IP прокси построена целиком и работает, но не вызвана ни разу:

  • сервис backend/app/services/proxy_rotation.pyrotate_proxy() (:225), суточный лимит 3/сутки (_quota_used_today, :122), запись истории (_record_attempt, :148), алерт на протухший токен (:176), извлечение нового IP из ответа (:202);
  • таблица истории scrape_proxy_rotations (миграция 198) — 0 строк;
  • rotate_url заполнен у всех четырёх узлов пула;
  • единственный вызывающий во всём коде — ручная ручка админки backend/app/api/v1/admin.py:3332. Автоматического вызова нет нигде.

То есть кнопка есть, её никто не нажимал, и по построению нажать её может только человек.

Почему это важно

Именно ротация — штатный ответ на бан узла. Сейчас при бане прокси остаётся забаненным до истечения срока, а пул из четырёх узлов обслуживает три источника (#2638: 37 из 53 банов — от исчерпания пула). На 27.08 в scrape_proxy_source_bans активен бан узла id=9 до 28.08 05:54, а domclick_city_sweep не собирался с 05.08.

Что решить

Разумно ли автоматически ротировать узел при бане — и если да, по какому признаку и с какой защитой от зацикливания. Суточный лимит 3/сутки уже реализован и служит естественным предохранителем. Вариант поменьше: ротировать не на каждый бан, а когда в пуле не осталось пригодных узлов для источника.

Решение за владельцем: ротация тратит квоту у провайдера, а её цена нам отсюда не видна.

Приёмка

  • Принято решение: автоматическая ротация при бане — да или нет
  • Если да — вызов проведён, признак срабатывания задокументирован, защита от зацикливания опирается на существующий суточный лимит
  • В scrape_proxy_rotations появляются строки, и по ним видно, помогла ротация или нет
  • Если нет — в коде и в тикете зафиксировано, что ручка сознательно ручная, чтобы её не искали как сломанную

Refs #2674, #2638, #3118

Ребёнок эпика #2674. Обнаружено 27.08 при разборе, почему прокси-пул не восстанавливается после банов. ## Факт Ротация IP прокси **построена целиком и работает**, но не вызвана ни разу: - сервис `backend/app/services/proxy_rotation.py` — `rotate_proxy()` (`:225`), суточный лимит 3/сутки (`_quota_used_today`, `:122`), запись истории (`_record_attempt`, `:148`), алерт на протухший токен (`:176`), извлечение нового IP из ответа (`:202`); - таблица истории `scrape_proxy_rotations` (миграция 198) — **0 строк**; - `rotate_url` заполнен у **всех четырёх** узлов пула; - единственный вызывающий во всём коде — ручная ручка админки `backend/app/api/v1/admin.py:3332`. Автоматического вызова нет нигде. То есть кнопка есть, её никто не нажимал, и по построению нажать её может только человек. ## Почему это важно Именно ротация — штатный ответ на бан узла. Сейчас при бане прокси остаётся забаненным до истечения срока, а пул из четырёх узлов обслуживает три источника (#2638: 37 из 53 банов — от исчерпания пула). На 27.08 в `scrape_proxy_source_bans` активен бан узла `id=9` до 28.08 05:54, а `domclick_city_sweep` не собирался с 05.08. ## Что решить Разумно ли автоматически ротировать узел при бане — и если да, по какому признаку и с какой защитой от зацикливания. Суточный лимит 3/сутки уже реализован и служит естественным предохранителем. Вариант поменьше: ротировать не на каждый бан, а когда в пуле не осталось пригодных узлов для источника. Решение за владельцем: ротация тратит квоту у провайдера, а её цена нам отсюда не видна. ## Приёмка - [ ] Принято решение: автоматическая ротация при бане — да или нет - [ ] Если да — вызов проведён, признак срабатывания задокументирован, защита от зацикливания опирается на существующий суточный лимит - [ ] В `scrape_proxy_rotations` появляются строки, и по ним видно, помогла ротация или нет - [ ] Если нет — в коде и в тикете зафиксировано, что ручка сознательно ручная, чтобы её не искали как сломанную Refs #2674, #2638, #3118
bot-backend added the
needs-discussion
priority/p2
scope/backend
scrapers
tech-debt
tradein
labels 2026-08-27 21:37:19 +00:00
Sign in to join this conversation.
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: lekss361/gendesign#3171
No description provided.