如何在不单击“ CTRL + C”的情况下通过cmd中的命令停止Django服务器?

时间:2019-09-12 21:03:52

标签: python django cmd

我正在PySide2上编写我的桌面应用程序(这并不重要),用于控制Django项目(在按钮上运行服务器和停止服务器)。我意识到只有启动服务器,但我无法添加停止服务器,因为停止服务器是单击cmd中的按钮"CTRL + C",现在我不知道如何将按钮的单击解释为代码或此问题的任何答案。

以下是“运行服务器”的示例,我需要一些有关“停止服务器”的帮助

os.chdir(ui.lineEdit.text())   # Change directory
os.system("python manage.py runserver")   # Run server in this

2 个答案:

答案 0 :(得分:4)

Ctrl + C 是终端解释的内容。它将向正在运行的进程发送SIGINT信号。因此,终止应用程序的不是 Ctrl + C 本身。

您可以执行相同的操作,例如,首先使用Popen(..)打开一个进程,然后最终发送一个信号:

from subprocess import Popen
from signal import SIGINT

# start the process
p = Popen(['python', 'manage.py', 'runserver'])

# now stop the process
p.send_signal(SIGINT)
p.wait()

答案 1 :(得分:1)

这是您可以从Python的system调用的另一种方法...为别名创建别名以杀死当前用户的现有runserver进程(以防它们卡住)也很方便:< / p>

# Kill any Django runserver instances for the current user
alias kill-runserver="ps -eaf | grep 'manage.py runserver' | grep "'$USER'" | grep -v grep | awk '{print "'$2'"}' | xargs kill -9"

创建别名后,只需运行kill-runserver。如果您想更安全一点,请从-9命令中删除kill