The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Одна копия telegram bot на python"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Python)
Изначальное сообщение [ Отслеживать ]

"Одна копия telegram bot на python"  +/
Сообщение от hebeseyir (ok), 25-Сен-19, 14:52 
Подскажите средство для того чтобы всегда была запущена только одна копия python скрипта на разных серверах, которая запускает бота
Иначе, если запущено 2 бота, то сообщения в чате дублируются
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Одна копия telegram bot на python"  +/
Сообщение от Аноним (1), 25-Сен-19, 23:38 
Unix-way решение проблемы...
Создаете отдельных пользователей на серверах, и раскидываете их SSH-ключи по серверам. Чтобы от этого пользователя на каждом сервере можно было подключиться на все остальные серваки.

Перед тем, как стартануть бота, по SSH берете список процессов с каждого сервера. Если он там запущен, ничего не запускаете. Если запущенных процессов на других серверах нет, запускаете.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Одна копия telegram bot на python"  +/
Сообщение от ABATAPAemail (ok), 27-Сен-19, 16:46 
> Unix-way решение проблемы...
> Создаете отдельных пользователей на серверах, и раскидываете их SSH-ключи по серверам.
> Чтобы от этого пользователя на каждом сервере можно было подключиться на
> все остальные серваки.
> Перед тем, как стартануть бота, по SSH берете список процессов с каждого
> сервера. Если он там запущен, ничего не запускаете. Если запущенных процессов
> на других серверах нет, запускаете.

Это bad-way. Между проверкой и запуском процесс может быть запущен и на первой машине.
Нужно вводить блокировку — например, через файл, который создаётся атомарной операцией (создание файла и эксклюзивная запись), писать в него PID и машину процесса, при старте проверять возможность  создания блокировки, жив ли процесс, и т. д.
Существуют уже готовые средства кластеризации приложений (HA-кластеры).

Кроме того, это можно сделать с помощью HA-кластера виртуализации (того же Proxmox).

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Одна копия telegram bot на python"  +/
Сообщение от Аноним (3), 28-Сен-19, 12:49 
>[оверквотинг удален]
>> сервера. Если он там запущен, ничего не запускаете. Если запущенных процессов
>> на других серверах нет, запускаете.
> Это bad-way. Между проверкой и запуском процесс может быть запущен и на
> первой машине.
> Нужно вводить блокировку — например, через файл, который создаётся атомарной операцией
> (создание файла и эксклюзивная запись), писать в него PID и машину
> процесса, при старте проверять возможность  создания блокировки, жив ли процесс,
> и т. д.
> Существуют уже готовые средства кластеризации приложений (HA-кластеры).
> Кроме того, это можно сделать с помощью HA-кластера виртуализации (того же Proxmox).

Вы переусложняете.
Требования High Availability не было. Требования проверки здоровья процесса не было.

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

Как вариант, роботу после входа писать в чат, что он вошёл в такое-то время. Все роботы, у которых вход до этого времени, должны немедленно выйти. Но это оффтопик для этого форума.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру