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 >
|