def __call__(self, environ, start_response): try: req, resp = Request(environ), Response() try: handler = getattr(self, environ["PATH_INFO"].lstrip("/").replace("/", "_")) except AttributeError: resp.status = '404 Not Found' else: output = handler(req, resp) if output is not None: resp.body = output if isinstance(output, basestring): cl = len(output) elif isinstance(output, (tuple, list)): cl = sum([len(a) for a in output]) else: cl = None if cl is not None: resp.headers.setdefault('Content-Length', str(cl)) h = [] for k, v in resp.headers.items(): if isinstance(v, (tuple, list)): for atom in v: h.append((k, atom)) else: h.append((k, v)) start_response(resp.status, h) return resp.output() except: status = "500 Server Error" response_headers = [("Content-Type", "text/plain")] start_response(status, response_headers, sys.exc_info()) return format_exc()
def __call__(self, environ, start_response): try: req, resp = Request(environ), Response() try: handler = getattr( self, environ["PATH_INFO"].lstrip("/").replace("/", "_")) except AttributeError: resp.status = '404 Not Found' else: output = handler(req, resp) if output is not None: resp.body = output if isinstance(output, basestring): cl = len(output) elif isinstance(output, (tuple, list)): cl = sum([len(a) for a in output]) else: cl = None if cl is not None: resp.headers.setdefault('Content-Length', str(cl)) h = [] for k, v in resp.headers.items(): if isinstance(v, (tuple, list)): for atom in v: h.append((k, atom)) else: h.append((k, v)) start_response(resp.status, h) return resp.output() except: status = "500 Server Error" response_headers = [("Content-Type", "text/plain")] start_response(status, response_headers, sys.exc_info()) return format_exc()
def logsink(msg="", level=20, traceback=False): if traceback: traceback = format_exc() cls.log.append((msg, level, traceback))