Python - 从Web应用程序启动长时间运行的进程

Gre*_*reg 6 python windows winapi popen long-running-processes

我有一个python Web应用程序,需要启动一个长时间运行的进程.问题是我不希望它等待整个过程.刚刚发射完成.

我在Windows XP上运行,并且在IIS下运行Web应用程序(如果这很重要).

到目前为止,我尝试过popen,但这似乎不起作用.它一直等到子进程完成.

Gre*_*reg 7

好的,我终于搞清楚了!这似乎有效:

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!
Run Code Online (Sandbox Code Playgroud)

注意:我添加了shell = True.否则在子进程中调用print会给出错误"IOError:[Errno 9] Bad file descriptor"

DETACHED_PROCESS是一个进程创建标志,传递给底层的WINAPI CreateProcess函数.