Вопрос по оптимизации отправки SSH команд с Django

ранее задавал вопрос Как реализовать отправку команды со страницы на Django по SSH? и в итоге нашел на него ответ и реализовал, что хотел, ниже привет пример того, что получилось. Но так же получились и доп вопросы, если кто может ответить, буду благодарен!!!

В итоге получилось реализовать то, что хотел. Но все же хотел бы получить ответы, может кто-то может помочь оптимизировать, улучшить данную задумку. Помимо django и python, думал, что может еще подойти Celery сюда, для моих задач. Но для этого мне нужно все это изучать. Кто-то возможно подскажет, стоит ли смотреть в сторону Celery и все изучить для оптимизации всей работы моей задумки? В итоге получилось сделать вот так: views.py

class StartServer(Server, View):

def get(self, request, *args, **kwargs):
    form = AddServerForm(request.POST or None)
    servers = Server.objects.all()
    context = {'form': form, 'csservers': servers}
    return render(request, 'csservers/server_detail.html', context)

def post(self, request, pk):
    server = Server.objects.get(id=pk)
    if request.POST:
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect(hostname=server.host, username=server.server_username, password=server.secret,
                       port=server.port)
        stdin, stdout, stderr = client.exec_command('./csgoserver st')
        data = stdout.read() + stderr.read()
        client.close()
        return redirect(server.get_absolute_url())
    return redirect(server.get_absolute_url())

HTML

<form action="{% url 'server_start' server.id %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <button type="submit" style="outline: none; border: none; background-color: red; color: #fff;">Запустить сервер</button>
</form>

urls.py

urlpatterns = [
path('servers', ServerListView.as_view(), name='servers'),
path('servers/<slug:slug>', ServerDetailView.as_view(), name='servers_detail'),
path('servers_add/', AddServer.as_view(), name='server_add'),
path('server_start/<int:pk>', StartServer.as_view(), name='server_start'),
]

Можно ли на Django как-то реализовать так, чтобы при отправке команды не выполнялось обновление страницы? Чтобы по нажатию кнопки просто отправлялся запрос. Так же вопрос по поводу отчета на странице о том, что выполнено действие. К примеру, нажимаю Запустить сервер, отправляется команда на сервер и после того, как сервер включится приходил ответ Сервер запущен. Буду благодарен за все возможные варианты и ответы!

Вернуться на верх