Ian Clelland
ian at veryfresh.com
Fri Mar 22 10:09:59 EST 2002
On Fri, Mar 22, 2002 at 05:18:50PM +0100, Alexander Steinert wrote: > > How can I force mod_python to only have one instance of the variable? Or > > should I be trying to do this in an entirely different way? > > > > I can set Apache to only start with one server (which makes it work), > > however it will spawn more servers if it gets two hits at the same time, so > > this won't really work. > > I thought about this topic a few weeks ago and came to the conclusion > that that you can't force the wished behaviour (if apache is forking). > > You need persistent storage in a DBMS or a file and must take care of > concurrent accesses. I've come to the same conclusion myself, after a fair bit of experimentation and research (there was a lengthy discussion on this list about a year ago: http://www.modpython.org/pipermail/mod_python/2001-April/001254.html ). Because Apache (on Unix) forks new processes for its children, they must necessarily run in isolated memory spaces. However, since each child process is long-lived, you can retain some persistent data (like a database connection handle) between requests /to that child/. It's not quite the same thing as global persistent data, but it works for some applications. Apparently mod_perl developers can get around this limitation by using the IPC::Shareable module -- has anybody in the Python community done any work on something similar? Ian <ian at veryfresh.com>
|