fix(ops): не хоронить источник после одного пустого прогона
Сторож считал источник исчерпанным, если прошлый прогон не добавил и не выбрал ни одной статьи. Но ровно так же выглядит обрыв связи с API и прогон на устаревшем коде парсера: сегодня CORE после единственной неудачи был помечен исчерпанным и больше не запускался — молча, без ошибки в интерфейсе. Теперь нужно два пустых прогона подряд. Разовый сбой переживём, а реально кончившийся источник остановится всего на один прогон позже. Заодно таймаут запроса к CORE снижен с 60 до 30 секунд: три попытки по минуте отъедали 180 секунд из 1500 бюджета на одной залипшей странице — та же грабля, что чинили в pmc_bulk. Обычный ответ приходит за 7 секунд. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -75,10 +75,12 @@ class COREParser(BaseParser):
|
||||
self.api_key = api_key or os.environ.get("CORE_API_KEY", "")
|
||||
if not self.api_key:
|
||||
logger.warning("CORE: ключ не задан (CORE_API_KEY) — API ответит 401")
|
||||
# Страница весит ~5 МБ, 12с как у PMC тут мало: обычный ответ ~7с.
|
||||
# 60с — с запасом на джиттер, но без риска съесть весь бюджет прогона
|
||||
# Страница весит ~5 МБ, обычный ответ ~7с. 30с — запас на джиттер в
|
||||
# десять раз, но без риска съесть бюджет прогона: три попытки по 60с
|
||||
# отъедали 180с из 1500с на одной залипшей странице (поймано 16.09.2026,
|
||||
# та же грабля, что чинили в pmc_bulk)
|
||||
self.client = httpx.Client(
|
||||
timeout=60,
|
||||
timeout=30,
|
||||
headers={
|
||||
"Authorization": f"Bearer {self.api_key}",
|
||||
"User-Agent": "AcademicHelper/1.0 (noreply@jze9.ru)",
|
||||
|
||||
Reference in New Issue
Block a user