PyThreadState_Swap(NULL)

Bryan belred at gmail.com
Fri Aug 18 17:21:40 EDT 2006


hi,

i've written a program that uses python c api code that lives in a 
shared library that is loaded by a custom apache module (mod_xxx).  this 
python c api code all works correctly under our test server and under 
apache but only if mod_python isn't loaded.  when apache loads 
mod_python as shown in the http.conf snippet below, 
PyThreadState_Swap(NULL) in mod_xxx returns NULL.  when the snippet of 
code in http.conf is commented out, it works again.  what do i have to 
do to have mod_xxx code work correctly when apache loads mod_python?


failure case when apache loads mod_python:
     Py_Initialize() succeeded
     PyThreadState_Swap(NULL) failed


sucess case when apache doesn't load mod_python:
     Py_Initialize() succeeded
     PyThreadState_Swap(NULL) succeeded


thanks,

bryan


--- mod_xxx ---

Py_Initialize();
if (Py_IsInitialized()) {
     log("Py_Initialize() succeeded");
}
else {
     log("Py_Initialize() failed");
}

PyEval_InitThreads();
g_py_main_interpreter = PyThreadState_Swap(NULL);
PyThreadState_Swap(g_py_main_interpreter);
PyEval_ReleaseLock();
if (g_py_main_interpreter) {
     log("PyThreadState_Swap(NULL) succeeded");
}
else {
     log("PyThreadState_Swap(NULL) failed");
}



---- apache's http.conf ----

LoadModule python_module   "../apache/bin/mod_python.so"

Listen 4119
<VirtualHost _default_:4119>
     <Directory "C:/Program Files/Foo">
         SetHandler    mod_python
         PythonHandler mod_python.publisher
         PythonDebug   Off
     </Directory>
</VirtualHost>




More information about the Python-list mailing list