Dolda2000 GitWeb
/
ashd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
python: Improved error handling and logging in ashd-wsgi.
[ashd.git]
/
python
/
ashd-wsgi
diff --git
a/python/ashd-wsgi
b/python/ashd-wsgi
index
af2c332
..
5e1db09
100755
(executable)
--- a/
python/ashd-wsgi
+++ b/
python/ashd-wsgi
@@
-1,6
+1,6
@@
#!/usr/bin/python
#!/usr/bin/python
-import sys, os, getopt, threading, time
+import sys, os, getopt, threading,
logging,
time
import ashd.proto, ashd.util, ashd.perf
try:
import pdm.srv
import ashd.proto, ashd.util, ashd.perf
try:
import pdm.srv
@@
-8,10
+8,11
@@
except:
pdm = None
def usage(out):
pdm = None
def usage(out):
- out.write("usage: ashd-wsgi [-hA] [-m PDM-SPEC] [-p MODPATH] [-l REQLIMIT] HANDLER-MODULE [ARGS...]\n")
+ out.write("usage: ashd-wsgi [-hA
L
] [-m PDM-SPEC] [-p MODPATH] [-l REQLIMIT] HANDLER-MODULE [ARGS...]\n")
reqlimit = 0
modwsgi_compat = False
reqlimit = 0
modwsgi_compat = False
+setlog = True
opts, args = getopt.getopt(sys.argv[1:], "+hAp:l:m:")
for o, a in opts:
if o == "-h":
opts, args = getopt.getopt(sys.argv[1:], "+hAp:l:m:")
for o, a in opts:
if o == "-h":
@@
-19,6
+20,8
@@
for o, a in opts:
sys.exit(0)
elif o == "-p":
sys.path.insert(0, a)
sys.exit(0)
elif o == "-p":
sys.path.insert(0, a)
+ elif o == "-L":
+ setlog = False
elif o == "-A":
modwsgi_compat = True
elif o == "-l":
elif o == "-A":
modwsgi_compat = True
elif o == "-l":
@@
-29,6
+32,9
@@
for o, a in opts:
if len(args) < 1:
usage(sys.stderr)
sys.exit(1)
if len(args) < 1:
usage(sys.stderr)
sys.exit(1)
+if setlog:
+ logging.basicConfig(format="ashd-wsgi(%(name)s): %(levelname)s: %(message)s")
+log = logging.getLogger("ashd-wsgi")
try:
handlermod = __import__(args[0], fromlist = ["dummy"])
try:
handlermod = __import__(args[0], fromlist = ["dummy"])
@@
-177,22
+183,23
@@
def dowsgi(req):
reqevent = ashd.perf.request(env)
exc = (None, None, None)
try:
reqevent = ashd.perf.request(env)
exc = (None, None, None)
try:
- respiter = handler(env, startreq)
try:
try:
+ respiter = handler(env, startreq)
try:
for data in respiter:
write(data)
if resp:
flushreq()
try:
for data in respiter:
write(data)
if resp:
flushreq()
-
except closed
:
- pass
- finally:
-
if hasattr(respiter, "close")
:
- respiter.close()
+
finally
:
+ if hasattr(respiter, "close"):
+ respiter.close()
+
except closed
:
+ pass
if resp:
reqevent.response(resp)
except:
exc = sys.exc_info()
if resp:
reqevent.response(resp)
except:
exc = sys.exc_info()
+ raise
finally:
reqevent.__exit__(*exc)
finally:
reqevent.__exit__(*exc)
@@
-227,6
+234,8
@@
class reqthread(threading.Thread):
flightlock.notify()
finally:
flightlock.release()
flightlock.notify()
finally:
flightlock.release()
+ except:
+ log.error("exception occurred in handler thread", exc_info=True)
finally:
self.req.close()
finally:
self.req.close()