示例#1
0
文件: http.py 项目: ChrisWren/monocle
        def _handler(request):
            try:
                value = yield self.handler(request)
                code, headers, content = extract_response(value)
            except Exception:
                log_exception()
                code, headers, content = 500, {}, "500 Internal Server Error"
            try:
                if request._disconnected:
                    return

                request.setResponseCode(code)
                headers.setdefault('Server', 'monocle/%s' % VERSION)
                grouped_headers = {}
                for name, value in headers.iteritems():
                    if name in grouped_headers:
                        grouped_headers[name].append(value)
                    else:
                        grouped_headers[name] = [value]
                for name, value in grouped_headers.iteritems():
                    request.responseHeaders.setRawHeaders(name, value)
                request.write(content)

                # close connections with a 'close' header
                if headers.get('Connection', '').lower() == 'close':
                    request.channel.persistent = False

                request.finish()
            except Exception:
                log_exception()
                raise
示例#2
0
文件: http.py 项目: ChrisWren/monocle
        def _handler(request):
            try:
                value = yield self.handler(request)
                code, headers, content = extract_response(value)
            except Exception:
                log_exception()
                code, headers, content = 500, {}, "500 Internal Server Error"
            try:
                if request._disconnected:
                    return

                request.setResponseCode(code)
                headers.setdefault('Server', 'monocle/%s' % VERSION)
                grouped_headers = {}
                for name, value in headers.iteritems():
                    if name in grouped_headers:
                        grouped_headers[name].append(value)
                    else:
                        grouped_headers[name] = [value]
                for name, value in grouped_headers.iteritems():
                    request.responseHeaders.setRawHeaders(name, value)
                request.write(content)

                # close connections with a 'close' header
                if headers.get('Connection', '').lower() == 'close':
                    request.channel.persistent = False

                request.finish()
            except Exception:
                log_exception()
                raise
示例#3
0
    def handle_request(self, req):
        before = time.time()
        resp = None

        handler, kwargs = self.route_match(req)
        try:
            if handler:
                resp = yield self.request_handler_wrapper(
                    req, handler, **kwargs)
            elif self.handler:
                resp = yield self.request_handler_wrapper(req, self.handler)
            else:
                resp = (404, {}, "")
        except Exception:
            log_exception()
            resp = (500, {}, "500 Internal Server Error")
        after = time.time()

        content_length = 0
        if len(resp) > 2:
            content_length = len(resp[2])

        log.info("[%s] %s %s %s -> %s (%s bytes, %.0fms); %s", req.remote_ip,
                 req.method, req.path, req.proto, resp[0], content_length,
                 (after - before) * 1000, req.headers.get('user-agent'))

        yield Return(resp)
示例#4
0
文件: http.py 项目: saucelabs/monocle
    def handle_request(self, req):
        before = time.time()
        resp = None

        handler, kwargs = self.route_match(req)
        try:
            if handler:
                resp = yield self.request_handler_wrapper(req, handler, **kwargs)
            elif self.handler:
                resp = yield self.request_handler_wrapper(req, self.handler)
            else:
                resp = (404, {}, "")
        except Exception:
            log_exception()
            resp = (500, {}, "500 Internal Server Error")
        after = time.time()

        content_length = 0
        if len(resp) > 2:
            content_length = len(resp[2])

        log.info("[%s] %s %s %s -> %s (%s bytes, %.0fms); %s",
                 req.remote_ip,
                 req.method, req.path, req.proto,
                 resp[0], content_length, (after - before) * 1000,
                 req.headers.get('user-agent'))

        yield Return(resp)
示例#5
0
    def handle_request(self, req):
        resp = None

        handler, kwargs = self.route_match(req)
        try:
            if handler:
                resp = yield self.request_handler_wrapper(
                    req, handler, **kwargs)
            elif self.handler:
                resp = yield self.request_handler_wrapper(req, self.handler)
            else:
                resp = (404, {}, "")
        except Exception:
            log_exception()
            resp = (500, {}, "500 Internal Server Error")

        yield Return(resp)
示例#6
0
文件: http.py 项目: jlipps/monocle
 def render(self, request):
     @_o
     def _handler(request):
         try:
             code, headers, content = yield launch(self.handler, request)
         except Exception, e:
             log_exception()
             code, headers, content = 500, {}, "500 Internal Server Error"
         try:
             request.setResponseCode(code)
             headers.setdefault('Server', 'monocle/%s' % VERSION)
             for name, value in headers.iteritems():
                 request.setHeader(name, value)
             request.write(content)
             request.finish()
         except Exception, e:
             log_exception()
             raise
示例#7
0
文件: http.py 项目: niallo/monocle
        def _handler(request):
            try:
                value = yield launch(self.handler, request)
                code, headers, content = extract_response(value)
            except Exception:
                log_exception()
                code, headers, content = 500, {}, "500 Internal Server Error"
            try:
                request.setResponseCode(code)
                headers.setdefault('Server', 'monocle/%s' % VERSION)
                for name, value in headers.iteritems():
                    request.setHeader(name, value)
                request.write(content)

                if not request._disconnected:
                    # close connections with a 'close' header
                    if headers.get('Connection', '').lower() == 'close':
                        request.channel.persistent = False

                    request.finish()
            except Exception:
                log_exception()
                raise
示例#8
0
文件: http.py 项目: jlipps/monocle
 def _handler(request):
     try:
         code, headers, content = yield launch(self.handler, request)
     except Exception, e:
         log_exception()
         code, headers, content = 500, {}, "500 Internal Server Error"
示例#9
0
文件: http.py 项目: justnoise/monocle
        def _handler(twisted_request):
            try:
                headers = HttpHeaders()
                for k, vs in twisted_request.requestHeaders.getAllRawHeaders():
                    for v in vs:
                        headers.add(k, v)

                # decode UTF-8 keys, matching tornado arg parsing behavior
                args = dict(
                    [(k.decode('utf-8'), v)
                     for k, v
                     in twisted_request.args.iteritems()])

                body = None
                if hasattr(twisted_request.content, "getvalue"):
                    body = twisted_request.content.getvalue()
                else:
                    twisted_request.content.seek(0, os.SEEK_END)
                    if twisted_request.content.tell() <= self.max_body_str_len:
                        twisted_request.content.seek(0, os.SEEK_SET)
                        body = twisted_request.content.read()
                    twisted_request.content.seek(0, os.SEEK_SET)

                request = HttpRequest(
                    proto=twisted_request.clientproto,
                    host=twisted_request.getRequestHostname(),
                    method=twisted_request.method,
                    uri=twisted_request.uri,
                    args=args,
                    remote_ip=twisted_request.getClientIP(),
                    headers=headers,
                    body=body,
                    body_file=twisted_request.content)
                request._twisted_request = twisted_request

                value = yield self.handler(request)
                code, headers, content = extract_response(value)
            except Exception:
                log_exception()
                code, headers, content = 500, {}, "500 Internal Server Error"
            try:
                if twisted_request._disconnected:
                    return

                twisted_request.setResponseCode(code)
                headers.setdefault('Server', 'monocle/%s' % VERSION)
                grouped_headers = {}
                for name, value in headers.iteritems():
                    if name in grouped_headers:
                        grouped_headers[name].append(value)
                    else:
                        grouped_headers[name] = [value]
                for name, value in grouped_headers.iteritems():
                    twisted_request.responseHeaders.setRawHeaders(name, value)
                twisted_request.write(content)

                # close connections with a 'close' header
                if headers.get('Connection', '').lower() == 'close':
                    twisted_request.channel.persistent = False

                twisted_request.finish()
            except Exception:
                log_exception()
                raise
示例#10
0
        def _handler(twisted_request):
            try:
                headers = HttpHeaders()
                for k, vs in twisted_request.requestHeaders.getAllRawHeaders():
                    for v in vs:
                        headers.add(k, v)

                # decode UTF-8 keys, matching tornado arg parsing behavior
                args = dict([(k.decode('utf-8'), v)
                             for k, v in twisted_request.args.iteritems()])

                body = None
                if hasattr(twisted_request.content, "getvalue"):
                    body = twisted_request.content.getvalue()
                else:
                    twisted_request.content.seek(0, os.SEEK_END)
                    if twisted_request.content.tell() <= self.max_body_str_len:
                        twisted_request.content.seek(0, os.SEEK_SET)
                        body = twisted_request.content.read()
                    twisted_request.content.seek(0, os.SEEK_SET)

                request = HttpRequest(
                    proto=twisted_request.clientproto,
                    host=twisted_request.getRequestHostname(),
                    method=twisted_request.method,
                    uri=twisted_request.uri,
                    args=args,
                    remote_ip=twisted_request.getClientIP(),
                    headers=headers,
                    body=body,
                    body_file=twisted_request.content)
                request._twisted_request = twisted_request

                value = yield self.handler(request)
                code, headers, content = extract_response(value)
            except Exception:
                log_exception()
                code, headers, content = 500, {}, "500 Internal Server Error"
            try:
                if twisted_request._disconnected:
                    return

                twisted_request.setResponseCode(code)
                headers.setdefault('Server', 'monocle/%s' % VERSION)
                grouped_headers = {}
                for name, value in headers.iteritems():
                    if name in grouped_headers:
                        grouped_headers[name].append(value)
                    else:
                        grouped_headers[name] = [value]
                for name, value in grouped_headers.iteritems():
                    if isinstance(name, unicode):
                        name = name.encode('ascii')
                    if isinstance(value, unicode):
                        value = value.encode('ascii')
                    twisted_request.responseHeaders.setRawHeaders(name, value)
                twisted_request.write(content)

                # close connections with a 'close' header
                if headers.get('Connection', '').lower() == 'close':
                    twisted_request.channel.persistent = False

                twisted_request.finish()
            except Exception:
                log_exception()
                raise