在Windows中,就是这样.
我认为这个问题的答案是我需要创建Windows服务.对于我想做的事情,这似乎很可笑.
我只是想在这里为我的经理拍些原型,我不负责产品的生产……事实上,它甚至可能永远都不会被产品化.它可能只是一些研究人员在玩的东西.
我有一个CGI脚本,该脚本接收要上传的文件,将其存储到一个临时位置,然后启动一个后台进程对文件进行一些严格的数字运算.然后,一些Javascript内容围绕调用其他CGI脚本以检查状态并根据需要更新页面.
只要子进程正在运行,除了可恶的Web服务器不会关闭连接之外,所有这些工作都可以进行.我已经做了一些搜索,在Unix上看来答案是使它成为守护程序,但是我现在仍停留在Windows上,我想答案是使它成为Windows服务?!?要启动一个该死的进程,然后关闭服务器连接,这似乎是非常沉重的.
那真的是唯一的方法吗?
我能够对其进行修改,以使其更简单,尽管这是一个繁琐的解决方案,但它对于我要制作的快速且肮脏的小原型是完美的.
因此,最初,我的主要脚本是这样做的:
subprocess.Popen("python.exe","myscript.py","arg1","arg2")
正如我所描述的,这不起作用.取而代之的是,我现在让我的主脚本发出这小段Javascript,该Javascript在文档完全加载后运行:
$("#somecrap").load("launchBackgroundProcess.py", {arg1:"foo",arg2:"bar"});
然后launchBackgroundProcess.py执行subprocess.Popen.
该解决方案永远无法扩展,因为在后台任务运行的整个过程中,它仍使浏览器连接保持打开状态.但是由于这个小问题,总有一天我可能最多同时拥有两个用户(即使我对此表示怀疑),也不用担心资源.这允许用户查看主页并获取Javascript更新,即使仍然没有充分的理由将HTTP连接挂起也是如此.
感谢您的回答!如果有人要求我将其具体化,我将使用Profane建议的资源.