Update rabbitMQ&paimentsMOK
All checks were successful
Deploy / deploy (push) Successful in 48s

This commit is contained in:
2026-03-12 09:00:14 +00:00
parent 1788a12cda
commit 1dcecb8d52
4 changed files with 191 additions and 65 deletions

View File

@@ -1,34 +1,35 @@
import json
import os
import json
import aio_pika
import logging
RABBITMQ_URL: str = os.getenv("RABBITMQ_URL", "amqp://user:password@rabbitmq/")
QUEUE_NAME: str = "ticket_events"
logger = logging.getLogger(__name__)
QUEUE_NAME = "pdf_generation_queue"
async def publish_ticket_paid_event(ticket_id: int, user_id: int) -> None:
"""Публикует событие ticket_paid в очередь RabbitMQ.
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
Формат совпадает с тем, что ожидает worker.py:
{"action": "ticket_paid", "ticket_id": <int>, "user_id": <int>}
"""
connection = await aio_pika.connect_robust(RABBITMQ_URL)
async with connection:
channel = await connection.channel()
# durable=True — очередь переживёт перезапуск брокера
queue = await channel.declare_queue(QUEUE_NAME, durable=True)
body = json.dumps(
{"action": "ticket_paid", "ticket_id": ticket_id, "user_id": user_id}
).encode()
await channel.default_exchange.publish(
aio_pika.Message(
body=body,
delivery_mode=aio_pika.DeliveryMode.PERSISTENT,
content_type="application/json",
),
routing_key=queue.name,
)
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}")