|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m2s
CI / backend-tests (pull_request) Successful in 17m20s
Голый except Exception вокруг per-quarter grid-walk ловил и NspdBulkWafError, при
том что его собственный комментарий обещал обратное:
# (WAF 403 пробросится из client и прервёт прогон — это ожидаемо,
# caller-task ловит и не ретраит, как в bulk_harvest.)
Прервать он не мог — ловил сам себя. Цикл шёл дальше по всем оставшимся кварталам,
долбя уже блокирующий WAF.
Цена. Замер прода 20.08: limit=500 участков раскладывается на 174 квартала, каждый
grid-walk делает 49 запросов. Под баном один прогон выдал бы до ~8500 обращений в
закрытую дверь вместо остановки на первом — ровно то поведение, что углубляет бан.
Соседний harvest_quarter в ЭТОМ ЖЕ файле починен предыдущей волной эпика (#2464-A)
с тем же доводом и прод-замером «23 job'а, 50 WAF-блоков, 0 упавших — то есть бан
ни разу не остановил сбор». Здесь то же место пропустили; правка приводит четвёртый
сайт к трём соседним.
Про причастность к текущему бану НСПД (#2956) не утверждаю: задача
backfill_parcel_geom_task в beat-расписании отсутствует, запускается вручную —
проверено. Но запуск её сейчас, при живом 403, дал бы ровно описанный сценарий.
Тест проверяет ПОВЕДЕНИЕ — вышла ли ошибка наружу и сколько кварталов успел
тронуть прогон. Против origin/main:
WAF-блок → вернулся GeomBackfillResult(quarters_scanned=3) вместо ошибки
rate-limit → то же самое
обычный сбой пропускает ОДИН квартал — контроль, зелёный с обеих сторон
здоровый прогон обходит все кварталы — контроль, зелёный с обеих сторон
Первый контроль не для симметрии: он ловит «починку», которая начала бы обрывать
обход на любой ошибке — тогда один битый квартал стоил бы всей ночной докачки.
Прогоны: tests/services/cadastre + tests/services/scrapers — 309 passed rc=0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| alembic | ||
| app | ||
| db/init | ||
| output | ||
| scripts | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .env.runtime.example | ||
| .gitignore | ||
| alembic.ini | ||
| debug.log | ||
| Dockerfile | ||
| pyproject.toml | ||
| uv.lock | ||