This commit is contained in:
2026-03-19 15:47:42 +01:00
parent 4e19090f0f
commit 7fc9108d2a
9 changed files with 194 additions and 30 deletions
+9 -6
View File
@@ -49,6 +49,9 @@ async def on_startup(ctx: dict[str, Any]) -> None:
"""
Inizializzazione worker all'avvio.
Avvia il MailboxPool con tutte le caselle attive.
NOTA: ctx["redis"] è già un ArqRedis (con enqueue_job) impostato da arq
prima di chiamare on_startup NON sovrascrivere con aioredis standard.
"""
global _mailbox_pool
@@ -63,9 +66,10 @@ async def on_startup(ctx: dict[str, Any]) -> None:
except Exception as e:
logger.warning(f"MinIO non disponibile al startup: {e}")
# Crea client Redis condiviso
redis_client = aioredis.from_url(settings.redis_url, decode_responses=True)
ctx["redis"] = redis_client
# Usa il client Redis ArqRedis già presente nel contesto (messo da arq).
# ArqRedis estende Redis, quindi funziona sia per MailboxPool sia per
# enqueue_job() nei job asincroni (send_pec, watch_receipt, ecc.).
redis_client = ctx["redis"]
# Avvia MailboxPool
_mailbox_pool = MailboxPool(redis_client=redis_client)
@@ -87,9 +91,8 @@ async def on_shutdown(ctx: dict[str, Any]) -> None:
if pool:
await pool.stop()
redis_client = ctx.get("redis")
if redis_client:
await redis_client.aclose()
# NON chiudere ctx["redis"]: è l'ArqRedis gestito da arq,
# che ne gestisce il ciclo di vita autonomamente.
logger.info("🛑 Worker fermato")