WSGI后处理清理

时间:2012-08-06 19:35:03

标签: python-2.7 replication mod-wsgi pymongo ming

我正在使用mod_wsgi和apache运行TurboGears应用程序,使用包含在Ming中的pymongo进行持久化。为了防范和扩展我的应用程序,我有兴趣通过pymongo ReplicaSetConnection使用mongo对副本集的支持。

但是,正如上面链接中所指定的那样,在完成每个pymongo close()对象时必须调用ReplicaSetConnection,否则会留下一堆僵尸进程(wtf pymongo)。 Ming中不支持这种行为(它实际上并不真正支持副本集),但我设法编写了一个关闭所有pymongo连接的清理函数。

现在我想在我的所有应用程序进程的进程清理上运行我的清理功能。它们有两个基本入口点:mod_wsgi到apache和paster命令。将清理添加到paster命令没有问题,但有没有办法为wsgi进程指定清理功能?

如果没有,有任何其他建议正确设置吗?

2 个答案:

答案 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