169 похожих чатов

Как подключать ботов "на лету"? Столкнулся с задачей - надо подключать

новых ботов на лету и при этом не сбрасывать стейты из FSM на уже работающих.

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

Как это можно сделать без перезагрузки основного скрипта? И можно ли?

Думаю похожих "велосипедов" было изготовлено много, кто может подсказать свою конструкцию или где можно почитать?

16 ответов

19 просмотров

У тебя тройка или двойка?

Мультибот называется. 3-й аиограм поддерживает это из коробки, есть костыли для второго. Можешь чекнуть в закрепе

C17H21NO- Автор вопроса
Fᴏʀᴅᴇɴ
У тебя тройка или двойка?

тройка. Но суть то в чем? Если у меня добавляется новый токен, скрипт уже крутится на сервере, правильно. И если его перезапустить с новыми токенами, у тех ботов, которые крутились, слетят все стейты.

https://github.com/darksidecat/aiogram-multibot-example

C17H21NO- Автор вопроса
Marple
https://github.com/darksidecat/aiogram-multibot-ex...

Там вот есть кусок: TOKENS = [ "TOKEN1", "TOKEN2", ] Мне надо добавить TOKEN3. Скрипт уже крутится. Но... В принципе, я уже понял, что его можно просто перезапустить без сброса состояний, если использовать Redis, а не MemoryStorage() В целом, понятно. Спасибо

C17H21NO
Там вот есть кусок: TOKENS = [ "TOKEN1", ...

А если добавятся 10 ботов с интервалом в 1 секунду?

C17H21NO
Там вот есть кусок: TOKENS = [ "TOKEN1", ...

Так запускает бота оно без перезагрузки, это можно увидеть тут

C17H21NO- Автор вопроса
🍉
А если добавятся 10 ботов с интервалом в 1 секунду...

У меня большая часть запросов исполняются долго. Иногда и по 10-15 минут (сбор статистики и анализ). Я их пихаю в RabbitMQ, и по мере выполнения возвращаю результат. Думаю туда же и засунуть регистрацию новых ботов.

Я к тому, что вариант с перезапуском всего сервиса ради добавления нового бота имеет свои недостатки. Сколько секунд сервис перезапускается? Добавь n ботов с этим интервалом и твой сервис будет лежать, постоянно перезапускаясь

C17H21NO- Автор вопроса
🍉
Я к тому, что вариант с перезапуском всего сервиса...

Ну, тут смотри, у меня есть HAProxy в качестве балансировщика. Он сортирует запросы на 2-3 одинаковых образа. По факту, что-то типа небольшого кластера из ботов. Если совсем точно, то сейчас так крутится API на FastAPI в докер-контейнерах и сейчас надо прикрутить интерфейс выдачи результатов через ботов и думаю сделать аналогично. То есть фактически, когда один образ перезагружается, HAProxy отправляет запросы на рабочие копии. И за пару минут все образы в кластере перемонтируются с новыми данными. Но в этой магии я не сильно разбирался, с меня там только контейнеры вовремя поставлять надо. :)

C17H21NO
Ну, тут смотри, у меня есть HAProxy в качестве бал...

Не понял, где там фласк, но в целом понял, что у тебя блю грин с вебхуками

C17H21NO- Автор вопроса
🍉
Не понял, где там фласк, но в целом понял, что у т...

Ну да. Примерно так. На FastAPI основной API написан, а ТГ боты исключительно в качестве интерфейса подключаем.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта