[mod_python] The new module loader

Graham Dumpleton grahamd at dscpl.com.au
Wed Apr 19 20:06:30 EDT 2006


Dan Eloff wrote ..
> I am interested in how this unified module importer works and how it avoids
> these problems.
> 
> I'd really appreciate a brief description of it's architecture, not that
> you
> usually need all that much encouraging ;)
> 
> Thanks,
> -Dan

Bit busy today to elaborate too much, but you can start by reading my
far from complete document on it:

  http://www.dscpl.com.au/articles/modpython-007.html

Graham

> On 4/19/06, Graham Dumpleton <grahamd at dscpl.com.au> wrote:
> >
> >
> > On 20/04/2006, at 8:06 AM, Dan Eloff wrote:
> >
> > > I went digging through the mod_python files and discovered how the
> new
> > > publisher loader works (using ModuleCache) and I borrowed the idea
> to
> > > import modules for my handler.
> >
> > Note that mod_python 3.3 will like be discarding that module loader
> > and the original one and replacing it with a grand unified module
> > reloader. :-)
> >
> > > The purpose of ModuleCache was to avoid sys.modules right?
> >
> > Yes.
> >
> > > I'm having some trouble with this, and I eventually tracked it down
> to
> > > multiple versions of a dependancy module being loaded.
> >
> > Known issue. See:
> >
> >
> > http://www.dscpl.com.au/articles/modpython-003.html#multiple-module-
> > instances
> >
> > > My handler loads one version, with empty module variables, while the
> > > actual modules for the pages load different version(s) and populate
> > > them with data. The changes are never reflected in the version kept
> by
> > > my handler (because they are not the same)
> > >
> > > This all makes sense, and is probably the intended effect, but what
> do
> > > you do for modules like Session in mod_python, where MemorySession
> > > uses a static class member to store sessions? Wouldn't the page
> > > modules each get their own version and thusly prevent sessions from
> > > working?
> >
> > Also see:
> >
> >
> > http://www.dscpl.com.au/articles/modpython-003.html#transfer-of-module-
> > data
> >
> > > I need to be able to reload modified modules, but also to make use
> of
> > > shared modules. These seem to be conflicting needs, however. Does
> > > anybody have any inisght into this situation that they can share?
> >
> > Only that mod_python 3.3 will hopefully fix a lot of this stuff. If you
> > are prepared to give 3.3 source code out of subversion repository a go
> > to see if things work as you expect, let me know and will tell you the
> > magic to enable the unified module importer in 3.3 as at moment it is
> > still off by default.
> >
> > Note though that even in 3.3, the "transfer of module data" issue still
> > has to be explicitly dealt with in some way. Although not confirmed how
> > this will be done, the new module importer as it stands now allows a
> > module to define a __clone__() method which will be called and which
> > can be used to transfer data from an old module to a new where data
> > needs
> > to be preserved across reloads.
> >
> > As I said, if interested I'll go into it more later.
> >
> > Graham
> >
> >


More information about the Mod_python mailing list