Как правильно организовать очередь сообщений телеграм бот?
Всем привет.
Как известно, телеграм ограничивает работу с апи в 30 обращений в секунду
Стало дать ответ можно только 30 участникам в секунду, что делать если в секунду к нам обратились скажем 100 участников? Получим ошибку 429?
Пришла в голову мысль, обрабатывать все запросы, записывать в базу ответы, а ответы уже рассылать по крону скажем по 25 сообщений в секунду
Но, единственное ли это решение и правильное ли? Кто сталкивался? Я не прошу код, прошу помочь мыслью)
Спасибо
Алексей Хог, Как я понял это если нужно разослать уведомления пользователям, т.е не критично, если задержка будет
а если бот общается одновременно со 100-200 юзерами, т.е юзеры отправляют запросы по этим запросам бот дает ответ, как быть тогда? Ведь ждать ответа 5-7 секунд вообще не фонтан
Мой метод, что я описал выше был бы харош, но если пользователей одновременно, скажем 1000, т.е выстроится очередь на пол минуты минимум, это вообще за гранью
GRO24, Ну да, в моём случае была только отправка уведомлений и задержка некритична, поэтому задачка пустяковая.
В вашем случае, ваш метод нормальный, выше головы не прыгнуть и задержки никак не избежать.
А если бот общается одновременно с 1000 пользователями, то это только писать в поддержку наверное и просить пересмотреть лимиты. Если такое возможно вообще )))
тут есть как минимум два решения.
1. очереди
Вы добавляете сообщение в очередь и отправляете его консьюмером. Если не получилось отправить, то добавляем его в отложенную отправку через n-секунд.
К примеру, отложенную отправку умеет https://github.com/beanstalkd/beanstalkd
2. крон
Да, пишите в базу или куда-угодно и отправляете с помощью крон-команд. Правда крон запускается раз в минуту и сообщения будут улетать с большой задержкой