pyTelegramBotAPI и threading
Код в упрощенном виде:
import threading
import telebot
from time import sleep
BOT = telebot.TeleBot("TOKEN")
def monitoring_func(chat_id):
BOT.send_message(chat_id, 'Мониторинг включен')
while True:
print(f'Слежение за чатом{chat_id} работает')
sleep(6)
@BOT.message_handler(commands=['test'])
def send_test(message):
BOT.send_message(message.chat.id, 'TEST OK')
@BOT.message_handler(commands=['start_thread'])
def start_thread(message):
threading.Thread(target=monitoring_func(message.chat.id)).start()
BOT.infinity_polling()
В чем суть - если я запускаю условное слежение командой /start_thread в двух чатах, то бот перестает реагировать на команды (например /test), только выполняя потоки. Если же только в одном чате запустить /start_thread, то бот работает корректно, параллельно выполняя поток и реагируя на команды. Как мне запускать потоки для произвольного количества чатов, чтобы они не блокировали бота?
Ответы (1 шт):
Автор решения: noobofthenoobs
→ Ссылка
Решил вопрос, добавив параметр num_threads с желаемым количеством потоков, оказалось что по дефолту там 2 потока на хэндлеры, которые исчерпывались:
BOT = telebot.TeleBot("TOKEN", num_threads=n)