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