@theurus

Блокируется бот во время выполнения функции, как исправить?

Есть бот на aiogram который умеет выполнять несколько разных функций по командам.

Пока выполняется одна команда для одного юзера, для всех остальных бот не отвечает. Как сделать работу без таких блокировок? Сами функции независимые, и могут выполнятся параллельно.

from aiogram import Bot, Dispatcher, types, executor
import cfg

bot = Bot(token=cfg.token)
dp = Dispatcher(bot)

@dp.message_handler(commands=['cmd1',])
async def send_welcome(message: types.Message):
    a=0.0
    for _ in range(500000000):
        a += 0.01
    result = f'f1 done\n\n{a}'
    await message.reply(result)

@dp.message_handler(commands=['cmd2',])
async def send_welcome(message: types.Message):
    a=0.0
    for _ in range(5000):
        a += 0.1
    result = f'f2 done\n\n{a}'
    await message.reply(result)

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest
Работаю с Python/Django
Сами функции независимые, и могут выполнятся параллельно.

С чего это вдруг? Они не асинхронные и запущенны не в отдельном потоке.
как исправить

Если функции ваши - перепишите асинхронно.
Если из библиотеки - запускайте асинхронно с помощью asyncio.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы