X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=python%2Fashd%2Fwsgidir.py;h=afd13f5021199c76a5f9a0a926a6adc12523faf8;hp=ada528215b33191011985931a55fdadb68d2be81;hb=b8d56e8f4550642b7798b88abd102ed5158e83be;hpb=7ed9b82bf5df75bc49e49c548307ad3a146224f6 diff --git a/python/ashd/wsgidir.py b/python/ashd/wsgidir.py index ada5282..afd13f5 100644 --- a/python/ashd/wsgidir.py +++ b/python/ashd/wsgidir.py @@ -36,7 +36,7 @@ functions, you may want to use the getmod() function in this module. import os, threading, types import wsgiutil -__all__ = ["application", "wmain", "getmod", "cachedmod"] +__all__ = ["application", "wmain", "getmod", "cachedmod", "chain"] class cachedmod(object): """Cache entry for modules loaded by getmod() @@ -87,13 +87,13 @@ def getmod(path): if path in modcache: entry = modcache[path] else: - entry = cachedmod() + entry = [threading.Lock(), None] modcache[path] = entry finally: cachelock.release() - entry.lock.acquire() + entry[0].acquire() try: - if entry.mod is None or sb.st_mtime > entry.mtime: + if entry[1] is None or sb.st_mtime > entry[1].mtime: f = open(path, "r") try: text = f.read() @@ -103,11 +103,10 @@ def getmod(path): mod = types.ModuleType(mangle(path)) mod.__file__ = path exec code in mod.__dict__ - entry.mod = mod - entry.mtime = sb.st_mtime - return entry + entry[1] = cachedmod(mod, sb.st_mtime) + return entry[1] finally: - entry.lock.release() + entry[0].release() class handler(object): def __init__(self):