Pull to refresh

Comments 20

UFO just landed and posted this here
В случае высоких нагрузок на тг бот, команда телеграма заопенсорсила часть Telegram Bot API, которую можно развернуть на своем сервере: github.com/tdlib/telegram-bot-api Для очень высоконагруженных ботов это оправдано.
UFO just landed and posted this here
Я считаю, чтобы понести огромные убытки, нужно сначала создать бизнес / продукт, который генерит огромные прибыли. Иначе можно очень долго готовиться, но так ничего и не сделав прекрасного. Если я не буду делать ничего сомнительного, меня не отключат. От человеческого фактора спасают простейшие бекапы.
UFO just landed and posted this here
Так можно про все сказать) за всем всегда стоит человек / группа людей. А также законы и чьи-то интересы.
С таким же успехом можно провести аналогию с Майкрософт, Google, AWS etc. Кто платит того и тапки как известно. Начнет гайки крутить телеграмм, перейдут в Дискорд, Сигнал или еше куда. Селф-хостед Джаббер не панацея + этот протокол по сей день имеет куча недоделок (решаемых, тут не спорю).
Видимо, это был условный «кремлебот», так как его комментарий никак не связан с темой статьи :)

Мне кажется, очень уместно заиспользовали все перечисленные технологии. Отличная работа!

Спасибо большое!
Касательно «высоконагруженности» ботов.

Допустим, есть некий бот, он делает polling, тебе удобно его использовать в разработке, он периодически запрашивает новые активности с телеграм-сервера. На какие метрики стоит смотреть не со стороны пользователя, а со стороны запущенного бота? Можно смотреть на количество открытых соединений, утилизацию ресурсов, ошибки, профилировать узкие места на основе метрик. А есть ли какие-то готовые решения, которые могут помочь с оценкой производительности работы бота (как с точки зрения утилизации ресурсов сервера, так и с точки зрения общей нагрузки от всех пользователей)? Стоит ли вообще переходить от polling модели, если текущий вариант потенциально может выдержать прогнозируемый рост?

И еще интересно, на основе каких показателей можно принимать решение о масштабировании бота.

Как решаете вопрос если надо все таки обратиться к апи? Вебхук тут не поможет.
Например отправить уведомления надо.
Через те самые celery tasks идете в telegram bot api ?

Для отправки сообщений не нужны ни пуллинг, ни вебхуки. Достаточно requests и знаний об api

Что-нибудь делали чтобы не терять сообщения, если их количество превышает лимиты телеграма? В пуллинг модели можно обойтись готовой очередью из telegram-bot-api, а с вебхуками и несколькими инстансами бота та очередь уже не поможет

Сообщения не будут теряться и в случае вебхука. Если по какой-либо причине вы не ответили 200 на вебхук, телега сделает retry и отправит его еще несколько раз.

Не совсем то. Я о исходящих сообщениях. В случае превышения лимитов на сервер телеграма они не попадут, нужно делать свою очередь

В экосистеме Django такие задачи легко реализуются с помощью модуля Celery.

Celery не является модулем Django, это отдельный проект.
вот жеж зануда то а
Ага, программирование приучает к точности :)

А как вы деплоете своих телеграм ботов в продакшн?

В последнее время начал переводить ботов на serverless, в частности тех которым достаточно webhook'ов.

В таком случае зоопарк становится намного меньше. Не нужно думать о

  • скейлинге

  • очереди задач

  • деплое (!)

  • докерах, компоузниках, процфайлах

  • и оркестрации всего этого

При всём при этом лямбды могут и довольно требовательные к вычислениям штуки делать, например openCV. И стоить это будет копейки

Спасибо вам за статью, и исходники на гитхабе)

Sign up to leave a comment.

Articles