【发布时间】:2013-12-08 01:28:33
【问题描述】:
在我的一个 Django 视图中,我正在调用一个 python 脚本并获取它的 pid:
from subprocess import Popen
p = Popen(['python', 'script.py'])
mypid = p.pid
当试图找出进程是否仍在从另一个页面运行时,我在mypid 上使用以下函数(感谢this question):
def doesProcessExist(pid):
if pid < 0:
return False
try:
os.kill(pid, 0)
except OSError, e:
return e.errno == errno.EPERM
else:
return True
无论我等待多长时间,进程仍然显示为正在运行。唯一阻止它的是,如果我使用 Popen 生成一个新的 python 脚本进程。 有没有办法解决这个问题?我不确定这是否是由于 Django 在脚本完成后没有正确关闭 python 或其他原因造成的。在 Ubuntu 的进程状态管理器中,进程显示为[python] <defunct>。
--
我尝试过的所有script.py 都存在这个问题。我目前使用的简单如下:
from time import sleep
sleep(5)
【问题讨论】:
标签: python django python-2.7 subprocess