cherrypy 线程不会产生子进程

cherrypy thread does not spawn subprocess

我有一个调用子进程 (subprocess.Popen) 的 cherrypy 应用程序,它大部分时间都工作正常,但有时它不起作用。当我重新启动服务器时,subprocess.popen 被调用并且工作正常。有没有办法在 cherrypy 中监视线程并检查为什么 subprocess.popen 没有被调用。

更新: 线程继续代码的其余部分,我可以响应,唯一的问题是子进程没有被调用

示例代码

def fn_test(self,**args):
    #return args['md5'].split()[0]
    final_html="the complete html"
    for i in ['ab','cd','ef']:

        if args.has_key(i):
            cherrypy.session[i]='checked'
        else:

            cherrypy.session[i]=''



    subprocess.Popen(["python","test.py",'test','aval','bval'])
    return final_html

对于简单和偶尔的后台任务,我建议 cherrypy.process.plugins.BackgroundTask. Take a look at this question 获取完整示例和其他有关后台任务的一般注意事项。

具体来说,处理subprocess问题,确保你能推理出你的后台代码的正确性。至少在模块的启动、停止和可选的 before/after 显着状态更改时创建几个 logging 条目。同样为了调试,建议用一些非常简单的东西替换你的命令,保证没有错误。例如,date >> date.log。那么问题是源于后台模块缺陷还是源于进程生成问题就很清楚了。