X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=python3%2Fashd%2Fwsgidir.py;h=d4289a7b05609895f839c255ea853481dd9ff060;hp=cc17b9b44ba00ff13f8543a6d902201dc6eef760;hb=2037cee268bcd12cc609a38a52b886724079fc4a;hpb=c221b22d61df5882462eab41e5c79ae2a3ea9642 diff --git a/python3/ashd/wsgidir.py b/python3/ashd/wsgidir.py index cc17b9b..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,8 +120,6 @@ 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.")