Работа нескольких пользователей с одной командой aiogram
Возникла небольшая проблема - я использую библиотеку aiogram для аналитического бота. В боте есть команды, которыми пользуются пользователи. Эти команды вытаскивают нужные данные из БД и рассчитывают разные показатели, потом выдают информацию сообщением для пользователя.
Например есть функция, которая вычисляет определенный показатель
async def get_number(n, msg):
result = functions.get_percent(n)
message = f"Result - {result:.2f}"
await bot.send_message(msg.chat.id, message)
@dp.message_handler()
async def send_text(msg: types.Message):
if '/get_number' in msg.text.lower():
await get_number(5, msg)
Когда несколько пользователей используют команду /get_number, то бот использует в очередь, некоторый пользователи остаются в режиме ожидания, пока команда не отработает у 1, 2, 3 и т.д. пользователя. Вопрос - как можно избежать этого и сделать отправку данных пользователям в момент использования команды, чтобы некоторые не ждали, пока функция отработает у другого человека.
Ответы (1 шт):
Познакомился получше с модулем asyncio и вот решение:
from asgiref.sync import sync_to_async
result = await sync_to_async(functions.get_percent)(n)