@Meksvinz

Telegram bot. Как реализовать параллельное выполнение задач?

В общем я пишу игрового telegram бота и столкнулся с проблемой. Хочу реализовать механику перехода из пункта A в пункт B, переход занимает некоторое реальное время ,скажем пять минут, и когда эти пять минут истекут, бот должен отправить пользователю уведомление о прибытии на место (при этом, ботом могут пользоваться другие пользователи). Очевидно, что нужна штука, которая постоянно сверяется со значением времени, отведенного на переход из A в B (значение в БД) и рассылает пользователям уведомления по истечении. Первое, что пришло в голову - потоки. Но ведь если бот завершит работу (родительский процесс), то завершат работу и все потоки (поток с функцией проверки значения)?
Прошу подсказать направление, в котором стоит двигаться в плане решения этой проблемы, спасибо
  • Вопрос задан
  • 3837 просмотров
Решения вопроса 1
Ranc58
@Ranc58
Backend python developer
Реализовывал подобное таким способом:
В базе хранятся нужные значения, раз в минуту(например) в celery запускается таск, который ищет в БД ID людей, которым бот должен выслать некое уведомление. Если таковые имеются - то по API передается боту список этих ID, и бот устраивает рассылку.
Сам бот реализован был по такой схеме:
https://github.com/eternnoir/pyTelegramBotAPI/blob...
Просто добавил еще одну ручку, которая принимает POST запрос со списком ID пользователей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Gasoid
@Gasoid
1) не использовать потоки в питоне
2) для очередей использовать celery, huey, rq (лучший способ)
4) запускать несколько воркеров/процессов
3) можно использовать asyncio, тогда полностью надо переделать программу под асинхронное программирование, не использовать time.sleep и блокирующие операции
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы