Iain Mackay
imm at iain-mackay.org
Tue Jul 6 21:17:45 EDT 2004
Thanks Grisha for being so quickly on the case. Session.py also includes the solution to my problem, using the Apache global locks. I now have the following code to protect a section of script that is using the database connection (it uses SQLite but would apply mutatis mutandis to another database). I have restored multi-threading and all works smoothly. If this is the best way to do this, it might be worth a mention in the next release of the documentation. I suppose ideally application code shouldn't use _apache. from mod_python import apache import _apache import re import sqlite import userdatabase import sys users = None apache.log_error ("userHandler initialising", apache.APLOG_INFO) def beginDB (req): _apache._global_lock(req.server, None, 0) global users if not users: try: try: defaultUser = req.get_options ()["defaultUser"] except: defaultUser = "guest" users = userdatabase.UserDatabase\ (sqlite.connect (req.get_options ()["dbFile"], 077, autocommit=1), defaultUser) except: (type, value, tb) = sys.exc_info() apache.log_error ("Cannot access user database: %s (%s)" % (type, value), apache.APLOG_ERR) def endDB (req): _apache._global_unlock(req.server, None, 0) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://modpython.org/pipermail/mod_python/attachments/20040706/04fb22db/attachment.html
|