fix: бесконечное автопереподключение NATS и логирование разрывов
max_reconnect_attempts=-1 (D-6), колбэки disconnected/reconnected/closed, options типизирован как dict[str, Any]. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
9cdc62b26d
commit
1b87cd2fdf
@ -8,6 +8,7 @@ middleware (gzip, proxy headers), healthcheck, обработчики исклю
|
|||||||
import base64
|
import base64
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import nkeys
|
import nkeys
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
@ -34,7 +35,23 @@ setup_logger(level="DEBUG" if settings.DEBUG else "INFO")
|
|||||||
async def _connect_nats() -> NATS | None:
|
async def _connect_nats() -> NATS | None:
|
||||||
"""Подключение к NATS (core, без JetStream); при ошибке — ``None``, приложение всё равно стартует."""
|
"""Подключение к NATS (core, без JetStream); при ошибке — ``None``, приложение всё равно стартует."""
|
||||||
nats_settings = settings.OPENBAO.NATS
|
nats_settings = settings.OPENBAO.NATS
|
||||||
options: dict = {"max_reconnect_attempts": 2}
|
|
||||||
|
async def disconnected_cb() -> None:
|
||||||
|
logger.warning("NATS: соединение потеряно")
|
||||||
|
|
||||||
|
async def reconnected_cb() -> None:
|
||||||
|
logger.info("NATS: соединение восстановлено")
|
||||||
|
|
||||||
|
async def closed_cb() -> None:
|
||||||
|
logger.warning("NATS: соединение закрыто")
|
||||||
|
|
||||||
|
# -1 — бесконечное автопереподключение (D-6): иначе клиент закрывается навсегда после короткого сбоя NATS
|
||||||
|
options: dict[str, Any] = {
|
||||||
|
"max_reconnect_attempts": -1,
|
||||||
|
"disconnected_cb": disconnected_cb,
|
||||||
|
"reconnected_cb": reconnected_cb,
|
||||||
|
"closed_cb": closed_cb,
|
||||||
|
}
|
||||||
if nats_settings.NATS_SEED and nats_settings.NATS_JWT:
|
if nats_settings.NATS_SEED and nats_settings.NATS_JWT:
|
||||||
kp = nkeys.from_seed(nats_settings.NATS_SEED.encode("utf-8"))
|
kp = nkeys.from_seed(nats_settings.NATS_SEED.encode("utf-8"))
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user