/
DisVic
/
task-tracker
Обзор
Документация
Войти
/
DisVic
/
task-tracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab4
app/client.py
53 строки
2 KB
DisappearedVictory
Final version of Lab 4
28 дек 2025, 00:11
28 дек 2025, 00:11
d1ba2d7
Код
Авторство
О чём код?
import asyncio import uuid import json from aio_pika import connect, Message RABBIT_URL = "amqp://guest:guest@localhost:5672/" async def main(): connection = await connect(RABBIT_URL) async with connection: channel = await connection.channel() # 1. Создаем временную очередь для ответов (callback queue) callback_queue = await channel.declare_queue(exclusive=True) # 2. Формируем запрос corr_id = str(uuid.uuid4()) request_body = { "id": str(uuid.uuid4()), "version": "v1", "action": "create_project", "data": { "name": "RabbitMQ Project" }, "auth": "secret-token-123" } print(f" [x] Sending request: {request_body['action']}") # 3. Публикуем в api.requests await channel.default_exchange.publish( Message( json.dumps(request_body).encode(), content_type="application/json", correlation_id=corr_id, reply_to=callback_queue.name, ), routing_key="api.requests", ) # 4. Ждем ответа print(" [x] Waiting for response...") async with callback_queue.iterator() as queue_iter: async for message in queue_iter: async with message.process(): if message.correlation_id == corr_id: body = json.loads(message.body.decode()) print(f" [.] Got response: {body}") return if __name__ == "__main__": asyncio.run(main())