35 lines
1.3 KiB
Python
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}") |