Dolda2000 GitWeb
/
ashd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
python: Handle errors when loading chained modules more properly.
[ashd.git]
/
python
/
ashd
/
wsgidir.py
diff --git
a/python/ashd/wsgidir.py
b/python/ashd/wsgidir.py
index
2da3a94
..
6bf00b6
100644
(file)
--- a/
python/ashd/wsgidir.py
+++ b/
python/ashd/wsgidir.py
@@
-33,11
+33,13
@@
argument `.fpy=my.module.foohandler' can be given to pass requests for
functions, you may want to use the getmod() function in this module.
"""
functions, you may want to use the getmod() function in this module.
"""
-import
os, threading, types
, getopt
+import
sys, os, threading, types, logging
, getopt
import wsgiutil
__all__ = ["application", "wmain", "getmod", "cachedmod", "chain"]
import wsgiutil
__all__ = ["application", "wmain", "getmod", "cachedmod", "chain"]
+log = logging.getLogger("wsgidir")
+
class cachedmod(object):
"""Cache entry for modules loaded by getmod()
class cachedmod(object):
"""Cache entry for modules loaded by getmod()
@@
-192,7
+194,11
@@
def chain(env, startreq):
object.
"""
path = env["SCRIPT_FILENAME"]
object.
"""
path = env["SCRIPT_FILENAME"]
- mod = getmod(path)
+ try:
+ mod = getmod(path)
+ except Exception:
+ log.error("Exception occurred when loading %s" % path, exc_info=sys.exc_info())
+ return wsgiutil.simpleerror(env, startreq, 500, "Internal Error", "Could not load WSGI handler.")
entry = None
if mod is not None:
mod.lock.acquire()
entry = None
if mod is not None:
mod.lock.acquire()