feat(proxy-pool): P3 — kit curl-paths acquire/release from pool behind USE_PROXY_POOL_CURL, ship-dark (#2163) #2197

Merged
lekss361 merged 1 commit from feat/proxy-pool-p3-curl into main 2026-07-02 18:56:37 +00:00
Owner

Закрывает #2163 (Epic #2160, P3). Ship-dark + fallback — флаг off, orchestration ещё не прокидывает provider → пул не активируется. Прод не меняется.

Что

  1. scraper_kit/contracts.pyProxyProvider Protocol + ProxyLease dataclass (acquire(provider)→lease|None, release, mark_health); +поле use_proxy_pool_curl в ScraperConfig
  2. app/services/scraper_adapters.pyRealProxyProvider над proxy_pool (короткая SessionLocal на операцию, прячет Session от kit); RealScraperConfig.use_proxy_pool_curl. Guard синхронизирован (test_proxy_provider_satisfies_protocol)
  3. scraper_kit/providers/_proxy.py (new) — curl_proxy_url(...) CM: инвариант off/None→env, on+пуст→env, on+lease→lease.url + mark_health + release в finally (best-effort, проблема пула не роняет сбор)
  4. curl-пути за флагом: cian/valuation, cian/detail (own-session), avito/imv (ExitStack держит lease весь warm-up→XHR — anti-bot не тронут), yandex/valuation

Инвариант (тесты)

  • off (дефолт): acquire не вызывается → golden-parity
  • on+пул пуст: fallback env, не падаем
  • on+lease: fetch через lease.url, mark_health, release в finally даже на исключении
  • on+acquire raises: fallback env

Verify

  • 15 новых/guard + 122 regression зелёные; ruff clean
  • runtime_checkable guard: ProxyProvider + ScraperConfig зелёные
  • боевые app/services/scrapers/* не тронуты

Осталось (P4)

orchestration/pipeline+SchedulerContext ещё НЕ прокидывает RealProxyProvider → truly-dark (пул не активен даже при флаге on). Wiring provider в ctx/pipeline = P4 (#2164). Health-нюанс: провайдеры, глотающие бан в return None (cian 403), метят ok=True; исключения (avito IMVAuthError, yandex) → ok=False; healthcheck-джоба корректирует.

Закрывает #2163 (Epic #2160, P3). **Ship-dark + fallback** — флаг off, orchestration ещё не прокидывает provider → пул не активируется. Прод не меняется. ## Что 1. `scraper_kit/contracts.py` — `ProxyProvider` Protocol + `ProxyLease` dataclass (`acquire(provider)→lease|None`, `release`, `mark_health`); +поле `use_proxy_pool_curl` в `ScraperConfig` 2. `app/services/scraper_adapters.py` — `RealProxyProvider` над `proxy_pool` (короткая SessionLocal на операцию, прячет Session от kit); `RealScraperConfig.use_proxy_pool_curl`. **Guard синхронизирован** (`test_proxy_provider_satisfies_protocol`) 3. `scraper_kit/providers/_proxy.py` (new) — `curl_proxy_url(...)` CM: инвариант off/None→env, on+пуст→env, on+lease→lease.url + mark_health + release в finally (best-effort, проблема пула не роняет сбор) 4. curl-пути за флагом: `cian/valuation`, `cian/detail` (own-session), `avito/imv` (ExitStack держит lease весь warm-up→XHR — anti-bot не тронут), `yandex/valuation` ## Инвариант (тесты) - off (дефолт): acquire не вызывается → golden-parity - on+пул пуст: fallback env, не падаем - on+lease: fetch через lease.url, mark_health, release в finally даже на исключении - on+acquire raises: fallback env ## Verify - 15 новых/guard + 122 regression зелёные; ruff clean - runtime_checkable guard: ProxyProvider + ScraperConfig зелёные - боевые `app/services/scrapers/*` не тронуты ## Осталось (P4) orchestration/pipeline+SchedulerContext ещё НЕ прокидывает `RealProxyProvider` → truly-dark (пул не активен даже при флаге on). Wiring provider в ctx/pipeline = P4 (#2164). Health-нюанс: провайдеры, глотающие бан в `return None` (cian 403), метят ok=True; исключения (avito IMVAuthError, yandex) → ok=False; healthcheck-джоба корректирует.
lekss361 added 1 commit 2026-07-02 18:56:30 +00:00
feat(proxy-pool): P3 — kit curl-paths acquire/release from pool behind USE_PROXY_POOL_CURL, ship-dark (#2163)
All checks were successful
CI / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
1196305537
lekss361 merged commit 0937da4260 into main 2026-07-02 18:56:37 +00:00
lekss361 deleted branch feat/proxy-pool-p3-curl 2026-07-02 18:56:37 +00:00
Sign in to join this conversation.
No reviewers
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#2197
No description provided.