fix(indexer): не превышать consumer_timeout RabbitMQ в retry-бэкоффе OpenAlex
5 попыток (1860с суммарно) были чуть больше дефолтного consumer_timeout RabbitMQ (1800с) — брокер рвал канал раньше, чем таск успевал сдаться и подтвердиться, воркер падал, docker его перезапускал, сообщение редоставлялось и весь цикл забега начинался заново с попытки 1 — бесконечный краш-луп, блокирующий весь пул воркера (concurrency=4).
This commit is contained in:
@@ -94,7 +94,13 @@ class OpenAlexParser(BaseParser):
|
||||
per_page = min(200, limit)
|
||||
total_fetched = 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:
|
||||
params: dict[str, Any] = {
|
||||
|
||||
Reference in New Issue
Block a user