X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=python3%2Fashd%2Fwsgidir.py;h=d4289a7b05609895f839c255ea853481dd9ff060;hb=2037cee268bcd12cc609a38a52b886724079fc4a;hp=f10111799aaf0c2395a24ffebd618e1f24c94c56;hpb=173e0e9efec5ae690cc157fe238113fcd814895e;p=ashd.git diff --git a/python3/ashd/wsgidir.py b/python3/ashd/wsgidir.py index f101117..d4289a7 100644 --- a/python3/ashd/wsgidir.py +++ b/python3/ashd/wsgidir.py @@ -87,8 +87,7 @@ def getmod(path): about the module. See its documentation for details. """ sb = os.stat(path) - cachelock.acquire() - try: + with cachelock: if path in modcache: entry = modcache[path] if sb.st_mtime <= entry.mtime: @@ -106,16 +105,13 @@ def getmod(path): entry = cachedmod(mod, sb.st_mtime) modcache[path] = entry return entry - finally: - cachelock.release() def chain(env, startreq): path = env["SCRIPT_FILENAME"] mod = getmod(path) entry = None if mod is not None: - mod.lock.acquire() - try: + with mod.lock: if hasattr(mod, "entry"): entry = mod.entry else: @@ -124,12 +120,11 @@ def chain(env, startreq): elif hasattr(mod.mod, "application"): entry = mod.mod.application mod.entry = entry - finally: - mod.lock.release() if entry is not None: return entry(env, startreq) return wsgiutil.simpleerror(env, startreq, 500, "Internal Error", "Invalid WSGI handler.") exts["wsgi"] = chain +exts["wsgi3"] = chain def addext(ext, handler): p = handler.rindex('.')