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)
|
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] = {
|
||||||
|
|||||||
Reference in New Issue
Block a user