Комментарии 5
К сожалению горизонтального скалирования для телеграм бота нормального нет. Если вы запустите два инстанса, то увидете спам из следующего в трейсах:telegram.error.Conflict: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
. Это вызывается особенностями того как устроен механизм получения обновлений ботом через long polling.
В остальном - да, если вынести всю обработку, а на инстанс с телеграмм ботом оставить только хэндлинг, то можно очень не плохо выиграть, но к сожалению не в синхронном коде, поскольку в вашем примере обращение в сервисы обработки всё ещё блокирующие и по сути лишь негативно скажутся на времени обработки запросов (хоть и незначительно в случае если сервисы будут на одной ноде расположены).
Итого, если подытожить: что б выжать максимум из неинстансируемого приложения телеграмма, действительно нужно вынести всё что только можно в другие приложения, но само приложение-обработчик всё равно придётся скалировать только вертикально, да и плюс ко всему для увеличения РПС скорее всего придётся уйти в асинхронность, поскольку, по крайней мере выбранный в статье фреймворк не супер хорошо справляется в мультитрединг.
А так да, грамотный скейлинг - это важно. Форточку сам открою :)
Вообще, тележные боты могут спокойно работать на вебхуках
И в базовом варианте скалировать можно даже просто приходящими http-запросами как любой другой веб-сервис
Ну или сделать свой обработчик лонг-поллинга, который будет пихать ивенты в очередь, а там их уже воркеры разгребут
Да, я и не отрицаю, что это возможно сделать на хуках, осталось всё это упомянуть в статье :)
Статья же рассказывает про горизонтальное скалирование и даёт примеры, которые не скалируются горизонтально. Ну то есть если просто сделать как сказано в статье - получится бессмысленное и беспощадно неработающее решение. Зачем такую вводящую в заблуждение статью писать - для меня загадка.
Какую нейроночку использовали для написания статьи? )))
Судя по иллюстрации от далишки, и некоторым паттернам, таким как чрезмерное разжевывание, это был chatgpt 4. Я прав? )))
Auto-Scaling в телеграм-ботах