новых ботов на лету и при этом не сбрасывать стейты из FSM на уже работающих.
Скажем, пользователь заводит нового бота, присылает токен и мне надо его автоматически запустить, не останавливая работу остальных копий.
Как это можно сделать без перезагрузки основного скрипта? И можно ли?
Думаю похожих "велосипедов" было изготовлено много, кто может подсказать свою конструкцию или где можно почитать?
У тебя тройка или двойка?
Мультибот называется. 3-й аиограм поддерживает это из коробки, есть костыли для второго. Можешь чекнуть в закрепе
тройка. Но суть то в чем? Если у меня добавляется новый токен, скрипт уже крутится на сервере, правильно. И если его перезапустить с новыми токенами, у тех ботов, которые крутились, слетят все стейты.
А зачем перезапускать?
Для стейтов используй редис
https://github.com/darksidecat/aiogram-multibot-example
Там вот есть кусок: TOKENS = [ "TOKEN1", "TOKEN2", ] Мне надо добавить TOKEN3. Скрипт уже крутится. Но... В принципе, я уже понял, что его можно просто перезапустить без сброса состояний, если использовать Redis, а не MemoryStorage() В целом, понятно. Спасибо
А если добавятся 10 ботов с интервалом в 1 секунду?
Так запускает бота оно без перезагрузки, это можно увидеть тут
Сенкью вери мач
У меня большая часть запросов исполняются долго. Иногда и по 10-15 минут (сбор статистики и анализ). Я их пихаю в RabbitMQ, и по мере выполнения возвращаю результат. Думаю туда же и засунуть регистрацию новых ботов.
Я к тому, что вариант с перезапуском всего сервиса ради добавления нового бота имеет свои недостатки. Сколько секунд сервис перезапускается? Добавь n ботов с этим интервалом и твой сервис будет лежать, постоянно перезапускаясь
Ну, тут смотри, у меня есть HAProxy в качестве балансировщика. Он сортирует запросы на 2-3 одинаковых образа. По факту, что-то типа небольшого кластера из ботов. Если совсем точно, то сейчас так крутится API на FastAPI в докер-контейнерах и сейчас надо прикрутить интерфейс выдачи результатов через ботов и думаю сделать аналогично. То есть фактически, когда один образ перезагружается, HAProxy отправляет запросы на рабочие копии. И за пару минут все образы в кластере перемонтируются с новыми данными. Но в этой магии я не сильно разбирался, с меня там только контейнеры вовремя поставлять надо. :)
Не понял, где там фласк, но в целом понял, что у тебя блю грин с вебхуками
Ну да. Примерно так. На FastAPI основной API написан, а ТГ боты исключительно в качестве интерфейса подключаем.
Обсуждают сегодня