Graham Dumpleton
grahamd at dscpl.com.au
Fri Aug 5 18:39:13 EDT 2005
On 06/08/2005, at 7:52 AM, Scott Chapman wrote: > Scott Chapman wrote: >> I need to make mod_python close the database connection nicely when >> Apache is shutdown or restarted. How do I get this info into >> mod_python's world? > > I found the Server's "register cleanup(request, callable[, data ])" > method. > > When do I call it? > > It seems it should be done once per Apache child process, not with > every request. Since to get the server object you need a request object, the only option is to call it as a side effect of a request. To avoid calling it more than once, you simply need to keep a global data flag some where which you can set the first time you register the cleanup handler thereby avoiding calling it again. If using a multithreaded MPM, just make sure you thread protect access to the flag and registration of the cleanup handler so you don't get race conditions. Note that the consequence of this is you can't really create a database connection using PythonImport but have to wait until the first time it is required by any request. If you did do it from PythonImport, and Apache was shutdown before a request was handled that needed the database connection, you wouldn't get your cleanup handler called as it wouldn't have been registered yet. > I don't see a way to run something only when mod_python is > instantiated initially. Correct, see: http://issues.apache.org/jira/browse/MODPYTHON-37 I still believe it would be possible to implement such a feature, and previously described how I felt it could be done, but it has low priority in the scheme of things. Graham
|