Многопоточность для бота в телеграме
При одновременном использовании бота разными людьми, он работает поочередно. С начала обрабатывает запрос одного, после второго. Если это простые команды, то этого не заметно, но есть команды, в которые прописаны скрипты для выполнения, и вот пока от этот скрипт не отработает, другую команду не захавает. Бот на питоне.
Как подогнать код под все запросы которые у меня есть, для одновременного их использования разным количеством людей? ВАЖНО: Должно работать для библиотеки pytelegrambotAPI ВАЖНО(2):Код запускается локально на компьютере не на сервере ВАЖНО(3): Все возможные решения НЕ были предназначены для именно той библиотеки в которой я работаю(pytelegrambotAPI)
Ответы (1 шт):
Вот возьмем к примеру такой декоратор
from multiprocessing.dummy import Pool
pool = Pool(20)
def executor(fu):
def run(*a,**kw):
pool.apply_async(fu, a, kw, lambda result: pass, lambda error: raise error)
return run
pool запустит 20 потоков
Теперь добавим
@bot.message_handler(commands=['start'])
@executor
def send_welcome(message):
time.sleep(5)
bot.reply_to(message, "Howdy, how are you doing?")
теперь каждая команда будет выполняться в одном из потоков пула - одновременно исполняется 20 команд.