Запуск программы на python с сайта
Есть программа, написанная на языке python, и есть сайт, который я пишу (пишу с помощью Django к слову, так его изучаю пока что). Необходимо по нажатию на кнопку запускать эту самую программу, чтобы она работала в фоновом режиме (программа - по сути бот для Дискорда, поэтому напрямую с работой сайта она не связана). Вот и появился вопрос, а как это сделать? Код в PyScript?
Ответы (2 шт):
Если и сайт и скрипт находятся на одном сервере, то последний можно вызвать через командную строку с помощью 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). В последней строке - страница сайта, загружаемая в ответ на ваш запрос, по нашей идее - это та же самая страница, с которой и прошло нажатие на кнопку (то есть пользователь ничего и не заметит, только надо внедрить переменную, которая будет показывает сайту, запущена ли программа, для показа разных кнопок - "ВРУБИТЬ" и "ВЫРУБИТЬ")