Срез 0: скелет tabular-parser — без фронта и БД, воркер NATS без JetStream, парсер-заглушка, контракт v1.0 #3
@ -8,6 +8,7 @@ middleware (gzip, proxy headers), healthcheck, обработчики исклю
|
||||
import base64
|
||||
from contextlib import asynccontextmanager
|
||||
from datetime import UTC, datetime
|
||||
from typing import Any
|
||||
|
||||
import nkeys
|
||||
from fastapi import FastAPI
|
||||
@ -34,7 +35,23 @@ setup_logger(level="DEBUG" if settings.DEBUG else "INFO")
|
||||
async def _connect_nats() -> NATS | None:
|
||||
"""Подключение к NATS (core, без JetStream); при ошибке — ``None``, приложение всё равно стартует."""
|
||||
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:
|
||||
kp = nkeys.from_seed(nats_settings.NATS_SEED.encode("utf-8"))
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user