在django+mod_wsgi+apache中初始化模块
我的Django应用程序是在Apache和WSGI上运行的。我的Django应用中的一个模块需要通过jpype加载一个Java库,而这个Java库由于其应用特性,初始化的时间很长。
问题是,在Apache和WSGI的设置下,Django处理每个HTTP请求时,这个Java库都会被重新加载。但是,当我在开发服务器(用命令python manager.py runserver 8000)上运行同样的应用时,它只会加载一次这个Java库。
有没有办法更改Apache或mod_wsgi的配置,或者我的Django应用,这样就不会在每个HTTP请求中重新加载Java库呢?
非常感谢。
安迪
1 个回答
2
你可能只是搞混了,实际上你在使用的Apache/mod_wsgi配置很糟糕。具体来说,你可能是在用嵌入模式和Apache的prefork MPM。这种方式不好,因为Apache会启动很多单线程的进程,这样你的代码就得在每个进程里都加载一次。这就是为什么你觉得每次请求都在同一个进程上发生,实际上每次请求都是在不同的进程上处理的。
确保你使用的是mod_wsgi的守护进程模式,并且你的代码是线程安全的,这样就可以使用单个多线程的进程,这样就不会出现这个问题了。
请编辑你的问题,添加你在Apache配置文件中的Apache/mod_wsgi配置片段,并说明你使用的是哪种Apache MPM。