想到这个问题已经是有一段时间了,目前要启动项目,所以又仔细想了一下。
django框架不同于j2EE,weblogic就是个很好的基于j2ee的应用服务器,里面有很多设施,都是常驻在内存的,这样的服务器还有Tomcat之类的。
但我了解的django同php一样采用平面数据库来记录用户会话,状态等信息,效率上没有直接从内存中读取的要快。而我的项目需求涉及的数据组织方式是树形的嵌套结构的业务数据结构,虽然存放在平面的数据表中,但是在查询的时候每一次都要多次的操作表记录,效果很低。
例如: 会员表字段( 会员编号,介绍人编号,节点人编号),一个成员即可以是会员,也可以是介绍人或者是节点人,所以在一条记录关联到多条记录或者被多次关联,那在查询的时候要列出 (会员名,介绍人名,节点人名),编写的sql将比较繁琐,如果写成一条的话,可以用inner jion或者 select in的方式实现,但是由于数据库内部要创建多个记录缓冲来搜寻,导致效率极低。
不得不考虑在django外部开发独立的应用服务程序,运行时加载会员表中的所有成员信息,并以指针的形式将这个会员拓扑树表现出来,那在查询检索的时候根据id和会员名称做个hash表,根据id直接定位到拓扑树的节点上,这个节点的子几点可以是指向介绍人、节点人节点的地址,那检索的速度可以提高100倍。
就这么决定了,所以想着 django要与外部应用程序交互的问题,当然是想到了ice通信框架。
在mod_python配置参数中有一项:
PythonHandler django.core.handlers.modpython
modpython.py这个代码只要修改了之后mod_python将重新加载,且这个模块将常驻内存,好了,可以把他当做一个入口服务实例了,
ice的初始化就放在modpython.handler()函数内,通过request参数传递到调用的每个模块内,
开心了!