Files
ticket-system/backend/core/rabbitmq.py
openit 5cc5efd2e0
All checks were successful
Deploy / deploy (push) Successful in 19s
add logging
2026-03-12 14:20:45 +00:00

35 lines
1.3 KiB
Python

import os
import json
import aio_pika
import logging
logger = logging.getLogger(__name__)
QUEUE_NAME = "ticket_events"
async def publish_ticket_task(ticket_id: int):
"""Отправляет ID билета в RabbitMQ."""
# Читаем строго из ENV прямо перед вызовом
rabbitmq_url = os.getenv("RABBITMQ_URL")
if not rabbitmq_url:
logger.error("КРИТИЧЕСКАЯ ОШИБКА: RABBITMQ_URL не задан в переменных окружения!")
return
try:
connection = await aio_pika.connect_robust(rabbitmq_url)
async with connection:
channel = await connection.channel()
queue = await channel.declare_queue(QUEUE_NAME, durable=True)
message = aio_pika.Message(
body=json.dumps({"ticket_id": ticket_id}).encode(),
delivery_mode=aio_pika.DeliveryMode.PERSISTENT
)
await channel.default_exchange.publish(
message,
routing_key=queue.name,
)
logger.info(f"Задача на генерацию PDF для билета {ticket_id} улетела в очередь.")
except Exception as e:
logger.error(f"Сбой RabbitMQ при отправке билета {ticket_id}: {e}")