Merge pull request 'fix(browser): bump fetch wait 2500→6000ms so avito listings hydrate (#905) — migration proven' (#912) from fix/905-browser-wait-ms into main
All checks were successful
Deploy Trade-In / changes (push) Successful in 5s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / test (push) Successful in 33s
Deploy Trade-In / build-backend (push) Successful in 47s
Deploy Trade-In / build-browser (push) Successful in 2m11s
Deploy Trade-In / deploy (push) Successful in 58s

Reviewed-on: #912
This commit is contained in:
lekss361 2026-05-31 16:20:42 +00:00
commit 9d357f0cc4
2 changed files with 6 additions and 3 deletions

View file

@ -225,7 +225,7 @@ class Settings(BaseSettings):
browser_nav_timeout_ms: int = 60000 browser_nav_timeout_ms: int = 60000
# Ожидание после DOMContentLoaded для JS-гидрации в мс. Читается сервером. # Ожидание после DOMContentLoaded для JS-гидрации в мс. Читается сервером.
# ENV: BROWSER_WAIT_MS. # ENV: BROWSER_WAIT_MS.
browser_wait_ms: int = 2500 browser_wait_ms: int = 6000
settings = Settings() settings = Settings()

View file

@ -17,7 +17,7 @@ WS-сервер) несовместим с современными версия
BROWSER_PORT TCP-порт HTTP-сервера (default: 3000) BROWSER_PORT TCP-порт HTTP-сервера (default: 3000)
BROWSER_RECYCLE_PAGES страниц в одном сеансе браузера до перезапуска (default: 15) BROWSER_RECYCLE_PAGES страниц в одном сеансе браузера до перезапуска (default: 15)
BROWSER_NAV_TIMEOUT_MS таймаут page.goto в мс (default: 60000) BROWSER_NAV_TIMEOUT_MS таймаут page.goto в мс (default: 60000)
BROWSER_WAIT_MS ожидание после DOMContentLoaded в мс (default: 2500) BROWSER_WAIT_MS ожидание гидрации listings после DOMContentLoaded, мс (default: 6000)
AVITO_PROXY_URL прокси ``http://user:pass@host:port`` (mobileproxy, #623); AVITO_PROXY_URL прокси ``http://user:pass@host:port`` (mobileproxy, #623);
SCRAPER_PROXY_URL generic-fallback. Без него soft-block. SCRAPER_PROXY_URL generic-fallback. Без него soft-block.
@ -39,7 +39,10 @@ logger = logging.getLogger(__name__)
BROWSER_PORT: int = int(os.environ.get("BROWSER_PORT", "3000")) BROWSER_PORT: int = int(os.environ.get("BROWSER_PORT", "3000"))
BROWSER_RECYCLE_PAGES: int = int(os.environ.get("BROWSER_RECYCLE_PAGES", "15")) BROWSER_RECYCLE_PAGES: int = int(os.environ.get("BROWSER_RECYCLE_PAGES", "15"))
BROWSER_NAV_TIMEOUT_MS: int = int(os.environ.get("BROWSER_NAV_TIMEOUT_MS", "60000")) BROWSER_NAV_TIMEOUT_MS: int = int(os.environ.get("BROWSER_NAV_TIMEOUT_MS", "60000"))
BROWSER_WAIT_MS: int = int(os.environ.get("BROWSER_WAIT_MS", "2500")) # 6000 (не 2500): avito гидрирует listings client-side ПОСЛЕ domcontentloaded;
# на 2.5с в HTML генерик-шелл без объявлений (0 listings), на 5-6с — полная
# выдача (~50 карточек, 3.2МБ). Подтверждено прод-дебагом 2026-05-31.
BROWSER_WAIT_MS: int = int(os.environ.get("BROWSER_WAIT_MS", "6000"))
# Прокси: основной источник — AVITO_PROXY_URL (mobileproxy, #623, лежит в # Прокси: основной источник — AVITO_PROXY_URL (mobileproxy, #623, лежит в
# backend/.env.runtime, тот же что у curl_cffi-avito). SCRAPER_PROXY_URL — # backend/.env.runtime, тот же что у curl_cffi-avito). SCRAPER_PROXY_URL —
# опциональный generic-fallback на будущее (cian/yandex). Без прокси camoufox # опциональный generic-fallback на будущее (cian/yandex). Без прокси camoufox