MOD_PYTHON + packages reloading

Graham Dumpleton Graham.Dumpleton at gmail.com
Thu Oct 18 07:08:10 EDT 2007


On Oct 18, 6:55 pm, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
> lukasz.... at gmail.com wrote:
> > I came across annoying problem during my fun with mod_python. I turned
> > out that mod_python load package only onca and don't care about any
> > changes to it. Obviously it makes sense on production server but
> > during development is more then annoying.
>
> Have you read the mod_python manual?
>
> http://www.modpython.org/live/current/doc-html/dir-other-par.html
>
> 5.4.8 PythonAutoReload
>
> Syntax: PythonAutoReload {On, Off}
> Default: PythonAutoReload On
> Context: server config, virtual host, directory, htaccess
> Override: not None
> Module: mod_python.c
>
> If set to Off, instructs mod_python not to check the modification date
> of the module file.
>
> By default, mod_python checks the time-stamp of the file and reloads the
> module if the module's file modification date is later than the last
> import or reload. This way changed modules get automatically reimported,
> eliminating the need to restart the server for every change.
>
> Disabling autoreload is useful in production environment where the
> modules do not change; it will save some processing time and give a
> small performance gain.

Have you read the other document:

  http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html

In particular read the documentation for the import_module() function.
It clearly describes in what limited cases module reloading is
performed. It does not do it for all modules as many mistakenly
believe. It does not do any form of module reloading on Python
packages because it is impossible to do properly due to the fact that
cyclic dependencies can occur with how packages are generally
structured.

For a description of some of the issues and why mod_python 3.3 works
like it does, see the big list of problems related to module reloading
in older versions of mod_python:

  http://www.dscpl.com.au/wiki/ModPython/Articles/ModuleImportingIsBroken

So, what is in 3.3 as described in documentation for import_module()
is as good as it gets. As long as you work within the constraints it
imposes you can go a long way, but don't expect miracles.

Graham




More information about the Python-list mailing list