gendesign/tradein-mvp/browser
bot-backend 30d40e5747
All checks were successful
CI Trade-In / changes (pull_request) Successful in 19s
CI / changes (pull_request) Successful in 40s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Successful in 2m0s
CI Trade-In / backend-tests (pull_request) Successful in 8m5s
Сайдкар МЕРЫ: не больше трёх живых браузеров и никаких зомби-процессов (#3412)
Инстанс camoufox поднимался на поставщика и не закрывался никогда: пять
поставщиков давали пять вечных браузеров в контейнере с mem_limit 2560m. Прод
15.09-17.09: 5 живых простояли 2.4 ч прямо перед резким рестартом 16.09 19:08;
медиана working_set 1494 МиБ при 3 живых, 1956 при 4, 2108 при 5.

Потолок BROWSER_MAX_INSTANCES (по умолчанию 3) проверяется в _launch_browser,
через который идут все запуски, включая фоновый retry. На потолке закрывается
простаивающий инстанс другого поставщика: без context'а первым, по давности
использования внутри класса. Занятый лок не трогается, если закрыть некого,
запуск идёт сверх потолка с предупреждением. Слот резервируется на время
запуска. _close_browser снимает инстанс со словарей до первого await и больше
не сбрасывает пейсинг: это делают только собственный relaunch и смена прокси,
как раньше. Четыре дефекта ревью ветки fix/3412-cian-instance-relaunch
закрыты тестами, каждый краснеет при снятии своей части фикса.

init: true у сервиса browser: PID 1 был python server.py и не собирал
осиротевших детей закрытого браузера; прод 17.09 — 2296 процессов в Z за 14 ч.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 15:04:34 +05:00
..
Dockerfile fix(tradein/browser): проверка шрифтов в сборке ловила угаданный порог, а не суть 2026-08-30 01:47:42 +03:00
server.py Сайдкар МЕРЫ: не больше трёх живых браузеров и никаких зомби-процессов (#3412) 2026-09-17 15:04:34 +05:00
test_server.py feat(tradein/browser): имитация чтения страницы человеком, целиком opt-in (#3283) (#3308) 2026-09-01 07:34:49 +00:00
test_server_anchor_origin_switch.py fix(tradein/avito): браузерный путь ходил на каждую карточку холодным (#3251) 2026-08-30 11:47:15 +03:00
test_server_anchor_search.py Сайдкар: якорь Домклика открывает свою выдачу напрямую, без захода через поиск Яндекса (#3263) 2026-09-17 12:53:04 +05:00
test_server_behaviour.py feat(tradein/browser): имитация чтения страницы человеком, целиком opt-in (#3283) (#3308) 2026-09-01 07:34:49 +00:00
test_server_challenge_reload.py feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия 2026-08-29 22:53:11 +03:00
test_server_cian_captcha.py fix(#3402): капча = «Captcha…» и «Вы не робот?» (бан+ротация); «Ошибка - Циан» — только лог на цикл наблюдения 2026-09-06 14:55:45 +05:00
test_server_cookie_domain.py test(tradein/browser): домен инжектируемых кук — регистрируемый, не хост из url 2026-08-30 01:51:02 +03:00
test_server_domclick_challenge.py fix(tradein/domclick): недосчитанная QRATOR-страница уходила наверх как контент 2026-08-29 18:31:35 +03:00
test_server_fetch_json.py fix(tradein/domclick): площадка отдаёт одну карточку на процесс браузера, а мы держали один на весь прогон (#3205) 2026-08-29 13:14:20 +03:00
test_server_fetch_mode.py fix(tradein/domclick): свип брал BFF навигацией браузера — теперь подзапросом (#3264) 2026-08-30 11:24:28 +03:00
test_server_http_status.py fix(tradein): сайдкар отдаёт подтверждённый бан площадки кодом 403, не 500 2026-09-06 01:58:02 +05:00
test_server_instance_limit.py Сайдкар МЕРЫ: не больше трёх живых браузеров и никаких зомби-процессов (#3412) 2026-09-17 15:04:34 +05:00
test_server_nav_timing.py Сайдкар: в логах /fetch появилось время целевой навигации — замер хвоста Циана (#3419) 2026-09-17 13:00:23 +05:00
test_server_no_proxy_refusal.py Автологин в Циан идёт через узел пула, а не через мёртвый env-узел сайдкара (#3410) 2026-09-17 12:58:03 +05:00
test_server_pacing.py fix(tradein/domclick): площадка отдаёт одну карточку на процесс браузера, а мы держали один на весь прогон (#3205) 2026-08-29 13:14:20 +03:00
test_server_pow_challenge.py feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия 2026-08-29 22:53:11 +03:00
test_server_proxy_override.py Сайдкар: таймзона браузера берётся из IP узла, а не жёстко МСК (#3187) 2026-09-17 12:49:37 +05:00
test_server_recycle.py fix(tradein/domclick): перезапуск браузера на карточку уничтожал пропуск QRATOR (#3212) 2026-08-29 14:09:23 +03:00
test_server_referer.py feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия 2026-08-29 22:53:11 +03:00
test_server_resource_block.py feat(browser): block font/media + per-provider page pacing — снизить proxy fan-out (#1812) 2026-06-19 21:28:09 +03:00
test_server_reuse_context.py test(tradein/browser): домен инжектируемых кук — регистрируемый, не хост из url 2026-08-30 01:51:02 +03:00
test_server_smoke.py test(tradein/browser): домен инжектируемых кук — регистрируемый, не хост из url 2026-08-30 01:51:02 +03:00