fix(indexer): не превышать consumer_timeout RabbitMQ в retry-бэкоффе OpenAlex
All checks were successful
Deploy / test (push) Successful in 3m12s
Deploy / deploy (push) Successful in 3s

5 попыток (1860с суммарно) были чуть больше дефолтного consumer_timeout
RabbitMQ (1800с) — брокер рвал канал раньше, чем таск успевал сдаться и
подтвердиться, воркер падал, docker его перезапускал, сообщение
редоставлялось и весь цикл забега начинался заново с попытки 1 —
бесконечный краш-луп, блокирующий весь пул воркера (concurrency=4).
This commit is contained in:
jze9
2026-08-26 20:08:16 +05:00
parent 76e221f856
commit 1dd3f1569f

View File

@@ -94,7 +94,13 @@ class OpenAlexParser(BaseParser):
per_page = min(200, limit) per_page = min(200, limit)
total_fetched = 0 total_fetched = 0
rate_limit_retries = 0 rate_limit_retries = 0
MAX_RATE_LIMIT_RETRIES = 5 # 5 попыток (60+120+240+480+960=1860с) превышали дефолтный
# consumer_timeout RabbitMQ (1800с) — брокер рвал канал до того,
# как таск успевал сдаться и заacke-иться, воркер падал и Docker
# перезапускал его, задача редоставлялась и весь цикл начинался
# заново с попытки 1 — бесконечный краш-луп. 4 попытки = 900с,
# запас с большим запасом.
MAX_RATE_LIMIT_RETRIES = 4
while total_fetched < limit: while total_fetched < limit:
params: dict[str, Any] = { params: dict[str, Any] = {