fix(tradein): бюджет по времени в geocode-missing — cron не таймаутит #422

Merged
lekss361 merged 1 commit from fix/tradein-geocode-time-budget into main 2026-05-22 09:37:42 +00:00
Owner

Проблема

~200 объявлений Cian/N1 в БД без координат → невидимы для оценки
(_fetch_analogs фильтрует по geom через ST_DWithin). Меньше
аналогов в каждой оценке.

Причина

cron-шаг geocode-missing дёргает эндпоинт через curl -m 320.
Геокодинг 100 адресов упирается в Nominatim (1 req/sec + typo-тиры на
провалах) и выходит за 320с. При таймауте curl cron-loop получал
{"remaining":0} из ||-фолбэка и обрывался → часть объявлений так
и оставалась без координат.

Решение

geocode_missing получает бюджет по времени — 240с, заведомо меньше
cron-таймаута curl -m 320. По исчерпании бюджета цикл выходит,
эндпоинт возвращает remaining > 0, и cron штатно продолжает
следующим чанком. Чанк-цикл cron (seq 1 15) не трогаем — он уже
умеет докручивать. Заодно убран мёртвый import asyncio.

Дальше

После деплоя — добить геокодинг ~200 объявлений на проде через
эндпоинт и проверить, что покрытие координатами выросло.

## Проблема ~200 объявлений Cian/N1 в БД без координат → невидимы для оценки (`_fetch_analogs` фильтрует по `geom` через ST_DWithin). Меньше аналогов в каждой оценке. ## Причина cron-шаг geocode-missing дёргает эндпоинт через `curl -m 320`. Геокодинг 100 адресов упирается в Nominatim (1 req/sec + typo-тиры на провалах) и выходит за 320с. При таймауте curl cron-loop получал `{"remaining":0}` из `||`-фолбэка и обрывался → часть объявлений так и оставалась без координат. ## Решение `geocode_missing` получает бюджет по времени — 240с, заведомо меньше cron-таймаута `curl -m 320`. По исчерпании бюджета цикл выходит, эндпоинт возвращает `remaining > 0`, и cron штатно продолжает следующим чанком. Чанк-цикл cron (`seq 1 15`) не трогаем — он уже умеет докручивать. Заодно убран мёртвый `import asyncio`. ## Дальше После деплоя — добить геокодинг ~200 объявлений на проде через эндпоинт и проверить, что покрытие координатами выросло.
lekss361 added 1 commit 2026-05-22 09:37:34 +00:00
cron geocode-missing-шаг дёргает эндпоинт через `curl -m 320`, а
геокодинг 100 адресов упирается в Nominatim (1 req/sec + typo-тиры на
провалах) и выходит за 320с. При таймауте curl cron-loop обрывался —
объявления Cian/N1 оставались без координат и были невидимы для оценки
(ST_DWithin по geom). Сейчас ~200 таких объявлений в БД.

geocode_missing теперь выходит из цикла по бюджету 240с (заведомо
меньше cron-таймаута) и возвращает remaining > 0 — cron штатно
продолжает следующим чанком. Заодно убран мёртвый import asyncio.
lekss361 merged commit 07903b1c36 into main 2026-05-22 09:37:42 +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#422
No description provided.