Многопоточность для бота в телеграме

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

Как подогнать код под все запросы которые у меня есть, для одновременного их использования разным количеством людей? ВАЖНО: Должно работать для библиотеки pytelegrambotAPI ВАЖНО(2):Код запускается локально на компьютере не на сервере ВАЖНО(3): Все возможные решения НЕ были предназначены для именно той библиотеки в которой я работаю(pytelegrambotAPI)


Ответы (1 шт):

Автор решения: eri

Вот возьмем к примеру такой декоратор

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 команд.

→ Ссылка