Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
杀死python执行的后台进程_Python_Django_Pid - Fatal编程技术网

杀死python执行的后台进程

杀死python执行的后台进程,python,django,pid,Python,Django,Pid,我有剧本 import os os.system('python manage.py runserver') 该脚本启动django服务器(无论它做什么,它可以是任何命令,直到按下ctrl+c或另一个快捷键为止) 我想要的是以任何方式停止服务器,而不是通过pid杀死它 我所尝试的: 我尝试使用subprocesslib,它的kill命令如下所述: 但这没有帮助。正如我所猜测的,原因是:我们杀死的不是manage.py runserver进程,而是评估python manage.py runs

我有剧本

import os
os.system('python manage.py runserver')
该脚本启动django服务器(无论它做什么,它可以是任何命令,直到按下
ctrl+c
或另一个快捷键为止)

我想要的是以任何方式停止服务器,而不是通过pid杀死它


我所尝试的:

我尝试使用
subprocess
lib,它的
kill
命令如下所述:

但这没有帮助。正如我所猜测的,原因是:我们杀死的不是
manage.py runserver
进程,而是评估
python manage.py runserver
的进程。所以,在终止进程之后,服务器仍在运行

此外,我还尝试使用
terminate
方法:

p = subprocess.Popen('python manage.py runserver', stdout=subprocess.PIPE, shell=True)
time.sleep(5)
p.terminate()
我认为它应该是这样工作的:服务器启动,5秒钟后停止,但从不停止


有什么方法可以终止进程吗?

这听起来很可疑。请不要这样做

Django建议使用WSGI允许Web服务器(Apache、NginX等)根据需要自动加载和卸载Django。此外,Django的内置web服务器也没有被考虑。一般来说,不要这样做

如果你不喜欢使用WSGI,你也可以做一个,等等。Django服务器本身可以由任何数量的系统服务工具来管理,比如或


要直接回答您的问题,您可以使用
process.terminate()
终止使用
子进程启动的活动进程,但在存在大量其他优秀工具的情况下,使用python脚本独自运行服务器是一个糟糕的主意。

问题是:对于开发,我需要一个命令来启动本地webserver,咖啡&少编译。一个同时杀死它们的命令
terminate
命令不起作用,更新了我的问题以显示我如何处理terminate您是否按照链接问题的答案创建了一个新的进程组
runserver
不会对服务器进程进行妖魔化,因此配方应该有效。如果不从管道中读取,请不要使用
stdout=PIPE
。非常感谢你!我刚刚再次尝试了我链接的问题的答案,并且。。。一切正常。我不知道为什么它第一次不起作用,但现在它正是我想要的。因此,感谢您再次向我指出这个问题,并再次感谢Denvul(不良输出是我的第二个问题)