我有一个需要启动长时间运行过程的python Web应用程序。问题是我不希望它等待过程完成。刚启动并完成。
我在Windows XP上运行,并且Web应用程序在IIS下运行(如果有的话)。
到目前为止,我尝试过popen,但是似乎没有用。它一直等到子进程完成。
好吧,我终于明白了!这似乎可行:
from subprocess import Popen
from win32process import DETACHED_PROCESS
pid = Popen(["C:\python24\python.exe", "long_run.py"],creationflags=DETACHED_PROCESS,shell=True).pid
print pid
print 'done'
#I can now close the console or anything I want and long_run.py continues!
注意:我添加了shell = True。否则在子进程中调用print会给我错误“ IOError:[Errno 9]错误的文件描述符”
DETACHED_PROCESS
是一个过程创建标志,该标志被传递给基础WINAPI
CreateProcess函数。