Marc D. Murray
marcdm at phronein.com
Tue Feb 21 10:11:23 EST 2006
If u can, you might want to have a look at memcached http://www.danga.com/memcached/ It's pretty fast, it's an external process to Apache and there's a simple python client available. I use it to cache rendered pages then my handler checks for the page there before trying to re-generate it. .hth /Marc DM On Tue, 2006-02-21 at 06:22 -0800, Kevin J. Smith wrote: > Hi, > > I have a page controller that all handlers import with "from > myapp.gui.pagecontroller import PageController". Each handler is a > class derived from the PageController. > > In the page controller, I have attempted to set up a shared memory > cache for all the controllers with code very similar to the > following: > > #... > import threading > > CACHE_LOCK = threading.Lock() > cache = {} > > def _fillCache(): > cache['one'] = '1' > cache['two'] = '2' > > class PageController: > # ... > def __init__(self): > #.... > if not len(cache.keys()): > CACHE_LOCK.acquire() > _fillCache() > CACHE_LOCK.release() > #... > > > However, I have discovered that this module is continually reimported > because it ALWAYS calls the _fillCache() function despite all the > handlers running within the same interpreter. > > I have upgraded to mod_python 3.2.7 noticing that in the change log > there is a lot about fixing module import problems but my app is still > behaving the same way. > > The flow of my app is that all requests are handled by a > frontController handler (this is explicitly set in the httpd config) > which, after checking the session and authentication and what-not and > based on the request path, forwards the request onto one of my > pageController handlers via util.redirect(). If I have followed > Graham's notes about module importing correctly, the frontController > and pageController classes would be imported via import_module() > whereas the actual pageController module is imported via the regular > python import mechanism. > > I have spent some time reading about the various "uniquenesses" of > module importing within mod_python but it hurt my head slightly and I > didn't know if most of it reflected the state of affairs in version > 3.2.7. From reading Graham's page I don't believe I should have a > problem with the PageController handler continually being reimported > but it certainly appears to be doing just that. > > Can someone shed some light on what I may be doing wrong or a possible > solution to setting up a shared cache within an interpreter? I know > that if I run similar code outside of mod_python my cache design works > fine. > > Cheers > > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python
|