这种双重分叉的方法是一种hack,对我而言,这表明不应该这样做:)。无论如何对于CGI。根据一般原则,如果某件事太难完成,那么您可能会错误地进行处理。
幸运的是,您提供了所需信息的背景信息-一个CGI调用,以启动一些独立发生的处理并返回给调用者。可以肯定-有unix命令就是这样做的-
计划命令在特定时间(
at)或每当CPU空闲(
batch)时运行。因此改为:
import osos.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/htmln'print 'Done!'
那里有。请记住,如果有一些输出到stdout / stderr,它将被发送给用户(这对于调试非常有用,但是脚本可能应该保持安静)。
PS。我只是记得 Windows 也具有的版本
at,因此,只需稍加修改调用,您就可以在Windows上的apache下进行该工作(vs
fork技巧在Windows上不起作用)。
PPS。确保
/etc/at.deny计划批处理作业中不排除运行CGI的进程
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)