@vhsporno

Как лучше использовать Django + несколько SSH подключений?

Сейчас у меня реализовано так, что при заходе на страницу у меня коннектится по SSH к устройству, после этого я могу выполнять любые действия, но уже без коннекта. Использую paramiko. В коде выглядит примерно вот так
client = paramiko.SSHClient()
def connect(ip, port, user, pass):
   client =  paramiko.connect()#и так далее

def ls():
    client.exec_command('ls')# и так далее

Соотвественно переходим на другую страницу(с другим клиентом) получем новый коннект, и любые комманды работают с ним.
Минусы в том что каждый раз при ребуте страницы происходит коннект, коннект не закрывается и поэтому на устройстве накапливается большое кол-во соединений.
Хотелось бы сделать как-то по уму это. Например когда поднимается сервер, происходит коннект ко всем клиентам с разными названиями переменной=разными коннектами(вопрос, как это реализовать? как потом в функции вызвать выполнение комманды без коннекта?). Так же хотелось бы использовать Celery что-бы все это работало в фоне, и при коннекте(например клиент офлайн, даже если ставить таймаут 3 секунды то сервер висит 3 секунды).
Вариант connect - > command -> connect.close() как по мне кажется слишком долгим.
Используется около 7 SSH подключений
Вопрос в том как будет лучше это реализовать?
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Запускайте на каждое ssh-соединение по отдельному потоку. Потоки синхронизируйте через внешнюю шину сообщений, например можно ее реализовать через redis, просто и дешево.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы