我正在使用mod_wsgi和apache运行TurboGears应用程序,使用包含在Ming中的pymongo进行持久化。为了防范和扩展我的应用程序,我有兴趣通过pymongo ReplicaSetConnection使用mongo对副本集的支持。
但是,正如上面链接中所指定的那样,在完成每个pymongo close()
对象时必须调用ReplicaSetConnection
,否则会留下一堆僵尸进程(wtf pymongo)。 Ming中不支持这种行为(它实际上并不真正支持副本集),但我设法编写了一个关闭所有pymongo连接的清理函数。
现在我想在我的所有应用程序进程的进程清理上运行我的清理功能。它们有两个基本入口点:mod_wsgi到apache和paster命令。将清理添加到paster命令没有问题,但有没有办法为wsgi进程指定清理功能?
如果没有,有任何其他建议正确设置吗?
答案 0 :(得分:0)
您无法保证甚至会调用您的代码,因为进程在调用之前可能会崩溃或被强行退出。有了这个警告,请阅读有关此特定问题的mod_wsgi文档:
http://code.google.com/p/modwsgi/wiki/RegisteringCleanupCode
答案 1 :(得分:0)
TurboGears本身也提供 shutdown 挂钩,可以使用config / app_cfg.py中的base_config.register_hook注册。
只要进程存在,就会调用shutdown hook