[mod_python] Catalog of mod_python.publisher problems.

Nicolas Lehuen nicolas.lehuen at gmail.com
Tue Jan 25 16:23:01 EST 2005


Graham,

Thanks for listing all those bugs. I'm a bit tired now to decide what
to do about this, but I think you did a great job in providing both a
bug description and a test case for each issue.

Maybe we could build a whole set of unit tests for
mod_python.publisher and put your test cases into it. Then we would
try to this those bugs until the test cases pass.

Regards,
Nicolas

On Tue, 25 Jan 2005 01:46:07 -0500, Graham Dumpleton
<grahamd at dscpl.com.au> wrote:
> Graham Dumpleton wrote ..
> > Graham Dumpleton wrote ..
> > >
> > > Do we need to document properly first the perceived problems and some
> > > examples of errornous behaviour? This will help to ensure we fix
> > > everything and provide a basis for some tests of any new implementation.
> > > I know that such information can be noted against the bug tracker item,
> > > but is it easier to thrash it out here first.
> >
> > FWIW, here is my personal list of problems in mod_python.publisher that
> > I know about. Note that I have ignored totally the basic issue that sys.path
> > makes which module you get unpredictable if import_module() is used
> > directly. This is just mod_python.publisher problems which should in
> > themselves be fixable whatever may eventually be done about the
> > import_module() method. Let me know if you want these put on bug
> > tracker as one item or three items.
> 
> Here is a fourth problem I have remembered. Although am sure that some
> will say that this is expected as well. ;-(
> 
> ImportError: cannot import name publisher
> ------------------------------------
> 
> In a directory publisher, setup for mod_python.publisher as described in
> previous email, and with same index.py. Ie.,
> 
>   import os
>   def index():
>     return os.getpid(),__file__
> 
> Now create a parallel directory called "handler" and in its .htaccess file add:
> 
>   SetHandler python-program
>   PythonHandler mptest
>   PythonDebug On
> 
> The mptest.py file in that directory should read:
> 
>   from mod_python import apache
>   import os
> 
>   from mod_python import publisher
> 
>   def handler(req):
>     req.content_type = "text/plain"
>     req.send_http_header()
>     req.write(str((os.getpid(),__file__)))
>     return apache.OK
> 
> Restart Apache to clear caches and access "handler" and "publisher"
> directories in that order. One gets:
> 
>   (747, '/Users/grahamd/Sites/handler/mptest.py')
>   (747, '/Users/grahamd/Sites/publisher/index.py')
>   (747, '/Users/grahamd/Sites/handler/mptest.py')
>   (747, '/Users/grahamd/Sites/publisher/index.py')
> 
> Okay, everything is fine.
> 
> Now restart Apache to clear caches and access "publisher" and then
> "handler". Ie., in reverse order. One gets:
> 
>   (761, '/Users/grahamd/Sites/publisher/index.py')
> 
>   Mod_python error: "PythonHandler mptest"
> 
>   Traceback (most recent call last):
> 
>     File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py", line 296, in HandlerDispatch
>       log=debug)
> 
>     File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py", line 421, in import_module
>       autoreload=autoreload,log=log,path=path)
> 
>     File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py", line 474, in _unsafe_import_module
>       module = imp.load_module(mname, f, p, d)
> 
>     File "/Users/grahamd/Sites/handler/mptest.py", line 4, in ?
>       from mod_python import publisher
> 
>   ImportError: cannot import name publisher
> 
> The way in which mod_python.publisher is loaded as PythonHandler,
> if done before being imported explicitly using "import", screws up
> that latter import.
> 
> I know some will scream that I am mixing "import" and "import_module()",
> but since mod_python.publisher is installed into "site-packages", one
> should expect it to work with "import". Whether it does is order dependent.
> 
> Because I use mod_python.publisher in Vampire for its user authentication
> stuff, this problem means that if using Vampire and elsewhere also wanting
> to use mod_python.publisher as PythonHandler, that the Vampire area
> should be setup with its own PythonInterpreter instance.
> 
> Having now remembered this problem, as a workaround in Vampire I
> should probably go and use:
> 
>   publisher = apache.import_module("mod_python.publisher")
> 
> instead. At least that way it will work all the time. :-)
> 
> I know my wanting to use internals of mod_python.publisher is the
> exception, but these sort of strange things shouldn't by right happen.
> 
> Graham
> 
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>


More information about the Mod_python mailing list