|
All checks were successful
Deploy / changes (push) Successful in 5s
Deploy / build-frontend (push) Has been skipped
Deploy / build-backend (push) Successful in 1m41s
Deploy / build-worker (push) Successful in 2m37s
Deploy / deploy (push) Successful in 1m18s
CI / changes (pull_request) Successful in 6s
CI / changes (push) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been skipped
scrape_objective.sync_objective_group инкрементировал n_requests и reports_ok ДО HTTP-стрима client.stream_report(...). Любая ошибка стрима (ObjectiveAuthError, ObjectiveAPIError — оба ⊂ RuntimeError ⊂ Exception, ijson-сбой, обрыв сети) проглатывалась generic except Exception в lots_pf-ветке без инкремента reports_failed и без re-raise. Внешний except (ObjectiveAuthError|APIError) был НЕДОСТИЖИМ для lots_pf. _finish_run(status='done' if reports_failed==0) помечал run УСПЕШНЫМ при полностью провалившемся главном 600МБ отчёте «Лоты». objective_lots/history оставались stale молча, админка показывала last_run_at, downstream supply-layers L2 видел 'done', rows_lots=0. Patch (зеркалит corp_sum — там паттерн уже правильный): - n_requests/reports_ok перенесены ИЗ pre-HTTP в after-success (после успешного commit'а внутри `with stream_report(...)`). - В except Exception lots_pf-ветке: n_requests += 1 + reports_failed += 1 + logger.exception (с traceback). Graceful (no re-raise) сохранён — sibling jobs продолжают, но статус run теперь честный. - corp_sum ветка не тронута. _finish_run сигнатура не меняется. 5 новых регрессионных тестов: success keeps reports_ok=1, auth-error / api-error / generic Exception в lots_pf инкрементируют reports_failed (не ok), _finish_run status='failed' при reports_failed>0. ruff clean. Closes #1220 |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| cbr_macro_sync.py | ||
| ekb_krt_sync.py | ||
| ekb_ppt_tep_sync.py | ||
| ekburg_permits_sync.py | ||
| etl_newbuilding_crossload.py | ||
| forecast.py | ||
| genplan_zones_sync.py | ||
| gknspecial_harvest.py | ||
| ird_harvest.py | ||
| izyatie_ocr_ingest.py | ||
| krt_geometry_sync.py | ||
| location_refresh.py | ||
| noise_sync.py | ||
| nspd_denorm_backfill.py | ||
| nspd_geo.py | ||
| nspd_sync.py | ||
| objective_etl.py | ||
| okn_objects_sync.py | ||
| opportunity_harvest.py | ||
| pat_subzones_load.py | ||
| planning_harvest.py | ||
| poi_sync.py | ||
| pzz_sync.py | ||
| refresh_analytics.py | ||
| refresh_quarter_price_index.py | ||
| reservation_ingest.py | ||
| rosstat_macro_sync.py | ||
| scrape_cadastre.py | ||
| scrape_kn.py | ||
| scrape_kn_catalog_objects.py | ||
| scrape_objective.py | ||
| supply_layers_refresh.py | ||
| zone_regulation_refresh.py | ||