这种双重分叉的方法是一种hack,对我而言,这表明不应该这样做:)。无论如何对于CGI。根据一般原则,如果某件事太难完成,那么您可能会错误地进行处理。
幸运的是,您提供了所需信息的背景信息-一个CGI调用,以启动一些独立发生的处理并返回给调用者。可以肯定-有unix命令就是这样做的- 计划命令在特定时间(at
)或每当cpu空闲(batch
)时运行。因此改为:
import os
os.system("batch <<< '/home/some_user/do_the_due.py'")
# or if you don't want to wait for system idle,
# os.system("at Now <<< '/home/some_user/do_the_due.py'")
print 'Content-type: text/html\n'
print 'Done!'
那里有。请记住,如果有一些输出到stdout / stderr,它将被发送给用户(这对于调试非常有用,但是脚本可能应该保持安静)。
PS。我只是记得 也具有的版本at
,因此,只需稍加修改调用,您就可以在Windows上的apache下进行该工作(vs fork技巧在Windows上不起作用)。
PPS。确保/etc/at.deny
计划批处理作业中不排除运行CGI的进程