plibvi · ingestion · стенд salam0nn.ru · 28.08.2026
Проверка пласта оптимизации конвейера событий: документы, состояние кода, живые прогоны и публичные пользовательские ручки стенда.
Незакоммиченный пласт работ поверх коммита d337698 на ветке
feature/ingestion-25-collectors (правки 25–27.08.2026):
HostGate в
ingestion/collectors/http_util.py: один троттлинг на хост вместо
отдельного у каждого клиента; порог отката считается по хосту, чтобы быстрый сосед
не разгонял осторожного.collect_util.preview_digest(),
колонка event_source_links.preview_hash (миграция c5e8a1d4f789).
Переведены 17 сборщиков; timepad и ithrhub — нет, список стережёт
tests/test_skip_rollout.py. Замер при внедрении: −59 % запросов.timepad/parse_afisha.py) — ключ API отозван площадкой; путь единственный,
в ~40 раз медленнее старого API.ingestion/alerts.py) и
счётчик стоимости прогона (http_requests /
http_wait_sec).| Файл | Что внутри |
|---|---|
docs/internal/13-branch-state.md | Главный документ пласта: что сделано, грабли сессии, тесты, машина пользователя, обнуление каталогов 27.08. |
docs/34-collectors-requirements-brief-2026-08-27.md | Сводка требований к сбору афиш: рамка «два сервиса, четыре шлюза», договор коллектора. |
docs/35-code-review-findings-2026-08-27.md | Ревью пласта: находки F-01…F-24, всё починено кроме F-18 (наблюдение) и F-19 (решение о коммитах за владельцем). |
docs/internal/02…04, 09, 11 | Устройство сервиса ingestion, сквозной поток через четыре шлюза, свод инцидентов. |
docs/24…33 | Предыстория: спека интеграции со стендом (№24), аудиты, волны источников 2–4, перевод 17 площадок в cron (№30). |
Весь описанный код на месте в рабочем дереве (по-прежнему не закоммичен — решение за владельцем,
F-19). Сторожевые наборы прогнаны локально против podushe_ingestion_test:
| Набор | Результат |
|---|---|
test_skip_rollout, test_skip_unchanged_details, test_collect_budget, test_alerts, test_timepad_parser | 181 passed |
test_http_util (включая сторож «быстрый сосед не разгоняет осторожный хост») | 18 passed |
За 8 часов — 43 успешных или частичных прогона: 81 003 HTTP-запроса, 64 358 карточек обновлено, 69 029 ключей совпало по отпечатку, 3 507 деталей пропущено (ночная волна идёт полным проходом, поэтому пропусков меньше совпадений). В каталоге ingestion 53 663 события, отпечаток заполнен у 59 049 связей с источниками.
Механизм виден в цифрах отдельных волн: mtslive — 2 068 пропусков,
kassir — 430, nethouse — 377, afisha — 205.
| Источник | Причина | |
|---|---|---|
mosafisha | таймаут — bilet.mos.ru с этого сервера не отвечает (задокументировано в файле 13 §7) | внешнее |
opendata_mkrf, data_mos | источники не отвечают, сборщик корректно останавливается после серии таймаутов | внешнее |
vk | токен привязан к другому IP; следующий прогон через полчаса — success | разовое |
| Проверка | Результат | |
|---|---|---|
GET /api/v1/public/events | 200 за 0,4 с; карточки каталога с атрибуцией (sources, description_source, cover_credit), полями is_mass и sessions_total | ok |
GET /api/v1/public/events/{id} | 200 за 0,06 с | ok |
| несуществующий uuid | 404, как положено | ok |
…/events/calendar | 200; на сегодня 2 277 событий, план на месяцы вперёд | ok |
фильтр city=Москва | в выдаче только Москва | ok |
пагинация по offset | в выдаче события восьми сборщиков: kudago, russpass, kassir, afisha, ticketland, timepad, bileter, all_events | ok |
/podushe/ (витрина) | 401 без пароля, 200 с basic auth — «События рядом · По душе» | ok |
/podushe/blog | 200 | ok |
/app/ (SPA) | 200 | ok |
На стенде 34 447 карточек с меткой catalog:, последний импорт из каталога —
сегодня 12:05 UTC. Разница с 53 663 событиями каталога — работа шлюзов отсева
(fail-closed атрибуция, feed_ready, окно дат) — так и задумано.
Проверка выполнена 28.08.2026 на стенде salam0nn.ru (ветка
feature/seo-w1-backend, рабочее дерево с незакоммиченным пластом оптимизации поверх
d337698). Цифры прогонов — из collection_runs базы
podushe_ingestion за последние 8 часов.