Задать вопрос
@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)
  • Вопрос задан
  • 210 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest
Работаю с Python/Django
Сами функции независимые, и могут выполнятся параллельно.

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

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

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

Похожие вопросы
Wanted. Санкт-Петербург
До 220 000 ₽
Wanted. Санкт-Петербург
До 150 000 ₽
ЛАНИТ Москва
от 120 000 ₽
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект