Запуск программы на python с сайта

Есть программа, написанная на языке python, и есть сайт, который я пишу (пишу с помощью Django к слову, так его изучаю пока что). Необходимо по нажатию на кнопку запускать эту самую программу, чтобы она работала в фоновом режиме (программа - по сути бот для Дискорда, поэтому напрямую с работой сайта она не связана). Вот и появился вопрос, а как это сделать? Код в PyScript?


Ответы (2 шт):

Автор решения: mrgervant

Если и сайт и скрипт находятся на одном сервере, то последний можно вызвать через командную строку с помощью subprocess:

import subprocess
...
command = 'python3 /ПУТЬ ДО СКРИПТА/script.py'
subprocess.Popen(command , shell=True)

Использование Popen() позволяет запустить другой скрипт и не ожидать его завершения.

Для более продвинутой работы с внешними процессами можно использовать Celery.

→ Ссылка
Автор решения: Никитоз Саныч

Помогли на сайте, спасибо, mrgervant. Пример рабочего кода в файле views фреймворка Django:

from django.template.response import TemplateResponse
import subprocess
import sys

def killbot(request):
     subprocess.Popen([sys.executable, 'static/prog/program.py'], shell = True)
     return TemplateResponse(request, "start.html")

При нажатии на кнопку на сайте запускается приложение (sys.executable - позволяет указать путь к интерпретатору языка, путь до программы указывается относительно файла views.py). В последней строке - страница сайта, загружаемая в ответ на ваш запрос, по нашей идее - это та же самая страница, с которой и прошло нажатие на кнопку (то есть пользователь ничего и не заметит, только надо внедрить переменную, которая будет показывает сайту, запущена ли программа, для показа разных кнопок - "ВРУБИТЬ" и "ВЫРУБИТЬ")

→ Ссылка