Единственный способ, которым это было бы возможно, - это если бы вы дали root-права вашему приложению Django, что ужасно небезопасно. Но, предполагая, что ваше приложение работает от имени пользователя root, вы можете запустить
import subprocess
subprocess.Popen(['/etc/init.d/apache2', 'restart'])
Или какая-либо команда вашего дистрибутива для перезапуска Apache. Если приложение Django не является пользователем root, вы можете запустить его с sudo
, используя библиотеку Python pexpect .
import pexpect
child = pexpect.spawn('sudo /etc/init.d/apache2 restart')
child.expect('[sudo] password for .*:')
child.sendline(password)
child.interact()
Обратите внимание, что этот способ требует от пользователя apache возможности запуска sudo
, что также небезопасно. В общем, я не вижу безопасного способа сделать это.