- if hasattr(mod, "wmain"):
- return (mod.wmain())(env, startreq)
- elif hasattr(mod, "application"):
- return mod.application(env, startreq)
- return wsgi.simpleerror(env, startreq, 500, "Internal Error", "Invalid WSGI handler.")
+ entry = None
+ if mod is not None:
+ mod.lock.acquire()
+ try:
+ if hasattr(mod, "entry"):
+ entry = mod.entry
+ else:
+ if hasattr(mod.mod, "wmain"):
+ entry = mod.mod.wmain([])
+ 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.")