在django + mod_wsgi + apache上初始化模块

时间:2011-08-22 01:11:44

标签: python django apache wsgi django-wsgi

我的django应用程序正在运行apache + wsgi。我的django应用程序中的一个模块需要通过jpype加载Java库,并且由于其应用程序性质,这个Java库需要很长时间才能初始化。

问题是,对于django在apache + wsgi setup中处理的每个http请求,都会重新加载此Java库。但是,当我在开发Web服务器(python manager.py runserver 8000)中运行相同的应用程序时,这不会发生。在开发Web服务器中,它仅加载Java库一次。

有没有办法更改apache或mod_wsgi配置或我的django应用程序,以便它不会为每个http请求重新加载我的Java库?

非常感谢。

安迪

1 个答案:

答案 0 :(得分:1)

您可能只是感到困惑,实际上使用的是Apache / mod_wsgi配置不佳。具体来说,您可能正在使用Apache prefork MPM的嵌入模式。这很糟糕,因为Apache将使用大量单线程进程,因此必须在所有这些进程中加载​​代码。这就是为什么你可能认为它针对同一个流程的每个请求都会发生,实际上每个请求都会遇到不同的流程。

确保您正在使用mod_wsgi的守护进程模式,并且您的代码是线程安全的,因此使用单个多线程进程并且它应该没有问题。

编辑您的问题并从Apache配置文件中添加Apache / mod_wsgi配置片段,并说明您正在使用的Apache MPM。