From 43034eda337913ba96e6eccec8244416a0920a99 Mon Sep 17 00:00:00 2001 From: jze9 Date: Tue, 25 Aug 2026 16:27:21 +0500 Subject: [PATCH] =?UTF-8?q?fix(indexer):=20=D0=BD=D0=B5=20=D0=B4=D1=83?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D1=8B=D0=B9=20=D1=82=D0=B5=D0=BA=D1=81=D1=82?= =?UTF-8?q?,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D0=BE=D0=BD=20=D1=83=D0=B6?= =?UTF-8?q?=D0=B5=20=D0=B5=D1=81=D1=82=D1=8C=20=D1=83=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add_document слал index.enrich_full_text для КАЖДОГО документа с url, даже когда full_text уже пришёл от парсера (у КиберЛенинки — OCR-фрагмент прямо в ответе поиска). Страница статьи там HTML, не PDF — enrich гарантированно ничего не находит, только тратит запрос впустую. При массовой заливке (десятки источников параллельно) это давало шквал запросов к чужому сайту и 503 в ответ — саму заливку не ломало, но съедало время и нагружало источник без всякой пользы. --- services/worker-indexer/app/tasks/index.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/worker-indexer/app/tasks/index.py b/services/worker-indexer/app/tasks/index.py index c90e73d..12b5412 100644 --- a/services/worker-indexer/app/tasks/index.py +++ b/services/worker-indexer/app/tasks/index.py @@ -325,8 +325,12 @@ def add_document(doc_data: dict[str, Any], dispatch_embed: bool = True) -> dict[ queue="queue.gpu", ) - # Обогащение полным текстом: скачать PDF по url и пересчитать fingerprints - if settings.FETCH_FULL_TEXT and doc_data.get("url"): + # Обогащение полным текстом: скачать PDF по url и пересчитать fingerprints. + # Если full_text уже есть (например, OCR-фрагмент из ответа поиска + # КиберЛенинки) — не дублируем запрос: страница статьи там HTML, а не PDF, + # enrich_full_text гарантированно ничего не найдёт, только зря нагрузит + # источник (и получит 503 при массовой заливке). + if settings.FETCH_FULL_TEXT and doc_data.get("url") and not doc_data.get("full_text"): celery_app.send_task( "index.enrich_full_text", args=[doc_id, doc_data["url"]],