Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python + RabbitMQ

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

VasyOK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, всем привет.
 
Необходима помощь знатоков Python и RabbitMQ.
 
> Что имеем: три сервера, два из них в яндекс облаке, на одном rabbitmq, на другом скрипт на питоне, третий находится в другом облаке и на нем тоже скрипт на питоне. Скрипты крутятся как сервисы.
 
> Проблема: Обмен сообщениями происходит со скорость в 1-2 сек, что как мне кажется очень медленно и что это можно ускорить.
 
RabbitMQ стоит дефолтный на Ubuntu.  
Пример функций, отправки/получения сообщений:
 

Код:
 
connection = None
channel_pool = None
 
async def get_connection():
    global connection
 
    if connection is None or connection.is_closed:
        connection = await aio_pika.connect_robust(f"amqp://admin:pas123456@{mq_ip}/")
 
    return connection
 
 
async def get_channel():
    global channel_pool
 
    if channel_pool is None or channel_pool.is_closed:
        connection = await get_connection()
        channel_pool = await connection.channel()
 
    return channel_pool
 
 
async def publish(consumer, data=None, action=None, event=None):
    global service_uuid, service_name
 
    sender_name = service_name + '.' + service_uuid
 
    arr = {'sender': sender_name, 'consumer': consumer, 'message': {'data': data, 'action': action, 'event': event}}
    body = json.dumps(arr)
 
    await set_log(body)
 
    channel = await get_channel()
 
    exchange = await channel.declare_exchange(
        "direct", auto_delete=True
    )
 
    queue = await channel.declare_queue(
        consumer, auto_delete=True
    )
 
    await queue.bind(exchange, consumer)
 
    body = bytes(body, "utf-8")
 
    result = await exchange.publish(
        aio_pika.Message(body, content_type="text/plain"),
        consumer,
    )
 
 
async def consuming():
    global service_name, demons_server_ip
 
    connection = await get_connection()
 
    async with connection:
        queue_name = service_name + '.' + service_uuid
 
        channel: aio_pika.abc.AbstractChannel = await connection.channel()
 
        queue: aio_pika.abc.AbstractQueue = await channel.declare_queue(queue_name, auto_delete=True)
 
        async with queue.iterator() as queue_iter:
            async for message in queue_iter:
                data = message.body
                asyncio.create_task(callback(data))
                await message.ack()
 

 
Возможно ли обмен сообщениями ускорить?

Всего записей: 403 | Зарегистр. 13-12-2003 | Отправлено: 11:53 11-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VasyOK
чем тема не устроила? Python
 

Цитата:
Возможно ли обмен сообщениями ускорить?

уверены, что проблема тут? время исполнения измеряли?

Всего записей: 15121 | Зарегистр. 20-09-2014 | Отправлено: 12:03 11-01-2024
VasyOK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
уверены, что проблема тут? время исполнения измеряли?

 
Время выполнения функции publish замерял. Она выполняется 1-2 сек.
Время отклика между сервером со скриптом и rabbitmq - 180 mls

Всего записей: 403 | Зарегистр. 13-12-2003 | Отправлено: 13:32 11-01-2024
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VasyOK

Цитата:
Время выполнения функции publish замерял

так замеряйте по отдельности каждый await и копайте тот, который тормозит.

Всего записей: 15121 | Зарегистр. 20-09-2014 | Отправлено: 21:12 11-01-2024
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python + RabbitMQ


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru