[mod_python] Loading servlet problem

Daniel Popowich dpopowich at comcast.net
Tue Jun 21 14:35:47 EDT 2005

Manera, Villiam writes:
> I noted a funny behavior on loading servlet, sometime work sometime :
> File "/usr/local/lib/python2.4/site-packages/mod_python/servlet.py",
> line 1345, in get_servlet
>     klass, servlets = self.__load_servlet(filename)
>   File "/usr/local/lib/python2.4/site-packages/mod_python/servlet.py",
> line 1276, in __load_servlet
>     raise ValueError, ('%s is not a subclass of Servlet (in %s)'
> ValueError: menu is not a subclass of Servlet (in
> /discoe/script/cgi/bulgaria/bulgaria_menu.py/menu.mps)
> Obviously menu.mps is subclass od Servlet.
> This happened sometime, on different servlet ????
> If I restart apache all work fine for some time...

Have you modified servlet.py?  If so and PythonAutoReload is "on"
then servlet.py is being reloaded by the python interpreter which
will create a new Servlet class with different identifier than the
one cached by the servlet manager in servlet.py.  That's why
restarting apache fixes your problem: you get fresh copies of
everything in new python interpreters.

To avoid this:

  1. You really shouldn't change servlet.py.  Put
     modifications/extensions in subclasses...the power of OO and

  2. In development mode, I configure my prefork apache with:

        MaxRequestsPerChild  1

     Sure, it's a performance hit, but you NEVER have to deal with
     stale python module importing issues and you don't have to
     litter your code with special-case importing code, etc.


Daniel Popowich

More information about the Mod_python mailing list