fix(parsers): ленивый импорт bs4 в CyberLeninka + добавить в зависимости
Some checks failed
Deploy / test (push) Failing after 2m35s
Deploy / deploy (push) Has been skipped

Прод-воркер падал на index.run_parser с 'No module named bs4': парсер импортил
beautifulsoup4 на верхнем уровне, а в образе worker-indexer его нет. Но bs4 нужен
только для fetch_article_details (детали статьи), а заливке (fetch+transform) — нет.

- импорт bs4 сделан ленивым (внутри fetch_article_details) → заливка работает даже
  без bs4 в образе;
- beautifulsoup4 добавлен в worker-indexer/requirements.txt (для деталей статьи).

Это была вторая причина, почему CyberLeninka никогда не наполняла базу (первая —
GET вместо POST, 405). Проверено вживую: fetch без bs4 в пути работает.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jze9
2026-08-12 21:10:55 +05:00
parent 9d005486df
commit 6099ef621f
2 changed files with 4 additions and 1 deletions

View File

@@ -17,7 +17,6 @@ from typing import Any
import httpx
from base import BaseParser
from bs4 import BeautifulSoup
logger = logging.getLogger(__name__)
@@ -172,6 +171,9 @@ class CyberLeninkaParser(BaseParser):
response = self.client.get(url)
response.raise_for_status()
# Ленивый импорт: заливке (fetch/transform) bs4 не нужен, только деталям статьи
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
meta = {}

View File

@@ -9,5 +9,6 @@ python-docx==1.1.0
datasketch==1.6.5
xxhash==3.4.1
langdetect==1.0.9
beautifulsoup4==4.12.3 # парсер CyberLeninka: детали статьи (fetch_article_details)
pydantic-settings==2.2.1
httpx==0.27.0