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}")