Флаг AVITO_DETAIL_BACKFILL_USE_CURL имеет разные значения в контейнерах, которые оба исполняют задачи #3182

Open
opened 2026-08-28 17:05:49 +00:00 by bot-backend · 0 comments
Collaborator

Найдено при разборе #3177. Один и тот же флаг имеет противоположные значения в контейнерах, каждый из которых может исполнять celery-задачи:

tradein-scraper   AVITO_DETAIL_BACKFILL_USE_CURL=false   (браузерный режим)
tradein-backend   AVITO_DETAIL_BACKFILL_USE_CURL=true    (curl)
tradein-browser   AVITO_DETAIL_BACKFILL_USE_CURL=true

Сейчас avito_detail_backfill исполняет tradein-scraper — подтверждается его же error_text: AvitoBlockedError: Avito detail firewall/soft-block (browser-mode). Так что фактическое поведение сегодня правильное.

Мина в том, что режим сбора зависит от того, какой воркер подхватил задачу. Перенос очереди, масштабирование воркеров или подхват задачи backend-контейнером молча переключит Авито на curl — а curl, по замеру 2026-08-21 (config.py:1090-1096), даёт ~6% обогащения против ~74% на браузере, потому что не решает JS proof-of-work за QRATOR. Отладка такого переключения обойдётся дорого: симптом — «скраппер вдруг перестал обогащать», причина — в docker-compose, а не в коде.

Рядом та же болезнь в мягкой форме: YANDEX_COOKIES_FILE=/app/yandex_cookies.json задан во всех трёх контейнерах, файла нет ни в одном, и переменную не читает никакой код — она только объявлена в config.py:1065. Мёртвая настройка, создающая ложное впечатление, что куки Яндекса куда-то подставляются.

Что сделать

  • Свести AVITO_DETAIL_BACKFILL_USE_CURL к одному значению во всех контейнерах, исполняющих задачи (сейчас верное — false)
  • Проверить остальные *_USE_CURL / *_FETCH_MODE на такое же расхождение
  • Убрать YANDEX_COOKIES_FILE из compose либо довести до рабочего состояния — сейчас это шум

Оценка S. Refs #3177

Найдено при разборе #3177. Один и тот же флаг имеет противоположные значения в контейнерах, каждый из которых может исполнять celery-задачи: ``` tradein-scraper AVITO_DETAIL_BACKFILL_USE_CURL=false (браузерный режим) tradein-backend AVITO_DETAIL_BACKFILL_USE_CURL=true (curl) tradein-browser AVITO_DETAIL_BACKFILL_USE_CURL=true ``` Сейчас `avito_detail_backfill` исполняет `tradein-scraper` — подтверждается его же `error_text`: `AvitoBlockedError: Avito detail firewall/soft-block (browser-mode)`. Так что фактическое поведение сегодня правильное. Мина в том, что **режим сбора зависит от того, какой воркер подхватил задачу**. Перенос очереди, масштабирование воркеров или подхват задачи backend-контейнером молча переключит Авито на curl — а curl, по замеру 2026-08-21 (`config.py:1090-1096`), даёт ~6% обогащения против ~74% на браузере, потому что не решает JS proof-of-work за QRATOR. Отладка такого переключения обойдётся дорого: симптом — «скраппер вдруг перестал обогащать», причина — в docker-compose, а не в коде. Рядом та же болезнь в мягкой форме: `YANDEX_COOKIES_FILE=/app/yandex_cookies.json` задан во всех трёх контейнерах, файла нет ни в одном, и переменную не читает никакой код — она только объявлена в `config.py:1065`. Мёртвая настройка, создающая ложное впечатление, что куки Яндекса куда-то подставляются. ## Что сделать - [ ] Свести `AVITO_DETAIL_BACKFILL_USE_CURL` к одному значению во всех контейнерах, исполняющих задачи (сейчас верное — `false`) - [ ] Проверить остальные `*_USE_CURL` / `*_FETCH_MODE` на такое же расхождение - [ ] Убрать `YANDEX_COOKIES_FILE` из compose либо довести до рабочего состояния — сейчас это шум Оценка S. Refs #3177
bot-backend added the
bug
scope/devops
scrapers
tradein
labels 2026-08-28 17:05:50 +00:00
Sign in to join this conversation.
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#3182
No description provided.