我来自PHP / Apache背景。使用PHP / Apache设置PHP解释器由apache模块加载,然后在每个页面请求创建执行整个脚本的新工作程序。我最近一直在使用Python中的WSGI应用程序,似乎Apache(mod_wsgi)服务器加载整个应用程序并使其保持活动状态。然后根据传入的请求执行代码片段。如果我的理解是正确的,它将解释为什么我的某些对象不会执行__del__
?
编辑:
在我的例子中,我有一个围绕python mysql模块的包装类。整个应用程序中只使用了一个实例。它的职责是在可能的情况下运行查询并在整个代码中重用mysql连接,但我必须确保在处理完所有内容时关闭连接。在某些部分我正在使用多处理,我告诉对象不要重用连接产生子进程。最初我以为我可以使用__del__
来实现关闭mysql连接,但是注意到它永远不会被调用。我最终使用了烧瓶拆解功能,以确保在每次请求后关闭连接但是想知道是否有其他选项可以很好地处理这个问题。