[mod_python] module caching problem

Robert Brewer fumanchu at amor.org
Tue Nov 30 17:51:33 EST 2004


Huzaifa Tapal wrote:
> Yes I am using linux on a debian OS.  How can I configure 
> apache to not run
> with mpm_prefork?  Pretty much I want to use Shared Memory 
> with mod_python
> so that for simultaneous requests it uses any modules that are already
> loaded in memory rather than instantiating new processes.
> 
> Any ideas?

Two ideas/options:

1. Recompile Apache. http://httpd.apache.org/docs-2.0/mpm.html
2. Put your app in its own process that runs forever, and use IPC between your mod_python app and your persistent process.

Robert Brewer
MIS
Amor Ministries
fumanchu at amor.org

> -----Original Message-----
> From: mod_python-bounces at modpython.org
> [mailto:mod_python-bounces at modpython.org] On Behalf Of Damjan
> Sent: Tuesday, November 23, 2004 6:49 PM
> To: mod_python at modpython.org
> Subject: Re: [mod_python] module caching problem
> 
> > I am running into a problem with mod_python in that, I am 
> importing a
> module
> > in the handler which creates a singleton in memory.  I am 
> using the module
> > to hold cache information for any other modules that import the same
> module.
> > 
> > I started testing the cache mechanism when I noticed that 
> the module was
> > being imported multiple times and not just once after the 
> first request
> > after apache had started.  To test this, I put a few lines 
> of code in the
> > module to write to a file the time it was last imported.  I 
> noticed that
> > after restarting apache, the first time it writes to the 
> file.  If I hit
> > refresh on my page immediately, multiple times, it doesn't 
> write.  If I
> wait
> > like 10 seconds or more and then hit refresh again, it 
> reimports that
> module
> > that should have been cached.
> > 
> > Also, If I make a request for a page from two different clients, it
> > reimports the module from each client.  Am I mistaken in 
> thinking that any
> > module imported in the handler then is cached in 
> mod_python's module cache
> > and subsequent imports of that module then are simply 
> served up from the
> > cache.  Under what conditions then would the same module 
> get reimported if
> > no modifications were made to that module?
> 
> I guess your are runnig Apache with mpm_prefork? 
> In that case there's a completely different python 
> interpreter for each
> Apache process, so your caching module is loaded in each of them.
> 
> Your testing showed how apache processes get to serve 
> requests, if it gets
> two simultaneus requests two apache processes will be active, each
> serving one of the request. But if you only generate one request after
> another, its most likely that the same process will serve  both
> requests... of course this depends on OS implementation... I think you
> are running on Linux, no?
> 
> -- 
> damjan | дамјан
> This is my jabber ID --> damjan at bagra.net.mk <-- not my mail 
> address!!!
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
> 
> 
> 
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
> 



More information about the Mod_python mailing list