QNext. Таймаут рассылки
- Что такое таймаут рассылки?
- Для чего нужен таймаут?
- Как мне избежать блокировки от telegram?
- А что если рассылка ничего не отправляет пользователям?
Что такое таймаут рассылки?
Чтобы понять что такое таймаут рассылки, необходимо понять как работают рассылки на платформе QNext. В момент старта рассылки, сначала запускается 🔗Триггер Рассылки для первого пользователя. Все реакции в этом триггере выполняются по очереди. Как только будут выполнены все реакции, будет запущен 🔗Триггер Рассылки для следующего пользователя... и так для всех пользователей по очереди из источника указанного в рассылке. Так вот временная пауза между Триггерами Рассылки для разных пользователей называется таймаутом рассылки.
Например если вы отправляете рассылку по списку пользователей - тогда первым будет обработан тот, кто раньше был добавлен в этот список. В целях оптимизации в будущем бот может изменить порядок, поэтому не стоит закладывать на это какую то логику.
Для чего нужен таймаут?
В документации telegram, в разделе My bot is hitting limits, how do I avoid this? сказано следующее:
- При отправки сообщений в 1 чат, нельзя делать более 1 сообщения в секунду.
- При отправке сообщений в разные чаты(разным людям), нельзя делать более 30 запросов в секунду.
- Также нельзя делать в группу более 20 сообщений в минуту.
Телеграм в принципе разрешает иногда короткие всплески и выход за пределы этих лимитов, но если вы будете злоупотреблять этим, в какой то момент на запросы вашего бота telegram будет отвечать ошибкой: 429 Too Many Requests: retry after XXX, где XXX - это количество секунд. И ваш бот не сможет ничего отправлять в течении указанного в ошибке времени.
Как мне избежать блокировки от telegram?
Чтобы не получить блокировку, необходимо в рассылке указать таймаут - это количество миллисекунд, сколько бот будет простаивать, перед тем как начать выполнять 🔗Триггер рассылки для следующего пользователя. Рассмотрим пример: Необходимо в рассылке отправить каждому пользователю 2 текста и следом меню. В этом случае ваш 🔗Триггер рассылки может выглядеть так:
- ⚡️message
- ⚡️message
- ⚡️sendMenu
Итак, мы имеем три реакции, которые отправляют что то юзеру в личку. У телеграмм есть ограничение не более 30 сообщений в секунду. Это значит что мы должны обрабатывать максимум 10 пользователей в секунду. Почему 10? - у нас 3 реакции на 1 пользователя, значит 10 пользователей в секунду генерируют 30 запросов. Лучше не играть с огнем, и обрабатывать не 10 пользователей в секунду, а чуть по меньше, например 8. Таймаут измеряется в миллисекундах (в 1 секунде - 1000 миллисекунд). Это значит что таймаут должен быть таким:
1000 миллисекунд / 8 пользователей = 125 миллисекунд
В настройках рассылки указываем таймаут 125.
А что если рассылка ничего не отправляет пользователям?
Если ваша рассылка не отправляет ничего пользователю, например вы хотите что то записать в профиль пользователям, тогда таймаут рассылки не нужен, лучше его убрать, чтобы рассылка обработалась как можно быстрее. Но, в любом случае в платформе есть минимальный таймаут 50 миллисекунд. Минимальный таймаут действует всегда для любых рассылок.