@FieryDruid

Какую библиотеку выбрать и как использовать для бота Telegram, чтобы запускать функцию раз в 30 секунд в течение 5 минут в отдельном потоке?

У меня есть бот в Telegram, требуется вызывать одну функцию через каждые 30 секунд в течение 5 минут после того как пользователь сделает определенное действие. Изначально я реализовывал это через .sleep() в обычном цикле, но в этом случае бот просто "умирает" на это время, причем у всех пользователей, что меня не совсем устраивает. Как лучше организовать вызов этой функции, чтобы она и не останавливала бота и спокойно работала при вызове от нескольких пользователей (для каждого свой таймер)?
В качестве вариантов я задумывался над Threading и Schedule.

В первом варианте, запускать по потоку на каждого юзера, как мне кажется, не самая хорошая идея, пусть даже на пять минут (А что если пользователей будет пара десятков?)
Со вторым вариантом не совсем понятно как остановить в нужный момент вызов функции + будет ли остановка одной из функций затрагивать все остальные, запущенные от других пользоваталей?
  • Вопрос задан
  • 810 просмотров
Решения вопроса 1
YardalGedal
@YardalGedal
yeah boy
В своих проектах я использую отдельный процесс для этого, который из базы данных получает данные о задачах на текущую минуту. Запускает их многопоточно (multiprocessing.pool.ThreadPool), либо можно и многопроцессорно (multiprocessing.Pool), в зависимости от задачи, и дальше "спит" 60 секунд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Teslaman
Можно использовать асинхронную библиотеку aiogram
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы