[mod_python] Problem with mod_python and ZConfig

Ville Silventoinen vsi at ebi.ac.uk
Fri Jun 17 10:41:04 EDT 2005


Hi,

I've been looking for something more extensive than ConfigParser
for my configuration files, so I tried ZConfig 2.3. I wrote a small
test module that uses ZConfig, which works ok. When I tried to use
the same module with mod_python, I get a Segmentation fault.

Has anyone had similar problems using mod_python with ZConfig 2.x?

My test handler looks like this:

   from mod_python import apache
   import ZConfig

   SCHEMA_FILE = '/homes/vsi/src/spylib/lib/Spy/spyschema.xml'
   CONFIG_FILE = '/homes/vsi/src/spylib/lib/Spy/spy.conf'

   def handler(req):
       try:
           req.write("Trying to load configuration...\n");
           schema = ZConfig.loadSchema(SCHEMA_FILE)
           config, handler = ZConfig.loadConfig(schema, CONFIG_FILE)
           req.write("Configuration loaded\n")
       except Exception, e:
           req.write("Failed to load configuration:\n%s" % str(e))

       return apache.OK

When called, I see "Trying to load configuration..." and then nothing.
In Apache error_log I get:

[Fri Jun 17 13:09:31 2005] [notice] mod_python: (Re)importing module 'testMPConfig'
[Fri Jun 17 13:09:33 2005] [notice] child pid 26452 exit signal Segmentation fault (11)

This happens every time I call the handler.

My configuration:

   LoadModule python_module /ebi/www/main/modules/mod_python.so

   <Directory /ebi/www/main/cgi-bin/vsi/test>
     AddHandler mod_python .py
     PythonHandler testMPConfig
     PythonAutoReload On
     PythonDebug On
   </Directory>

My environment:

   Apache-2.0.54
   Python-2.4
   mod_python-3.1.3
   ZConfig 2.3 (tried 2.2 as well)
   Red Hat Linux release 9 (Shrike) 2.4.20-8rlx4smp

Any help would be appreciated. I've tried commenting lines out of the
handler, looks like the problem happens with "loadSchema". I also tried
to use "loadSchemaFile", but it didn't help.

On the same note, what is the recommended way to handle configuration
with Python? I'm fairly new to Python. I'd like to have a configuration
that is reloaded automatically when modified, validation rules, sections
and proper values (so that integer strings become ints/longs in the
configuration object, keys with multiple values become lists, etc.)
Is the best way to write a Python module that contains the configuration?
This would skip parsing phase and let mod_python reload the module when
it's been modified.

Thanks,
Ville



More information about the Mod_python mailing list