当前位置: 首页>>代码示例>>Python>>正文


Python Response.bytes_transferred方法代码示例

本文整理汇总了Python中webob.Response.bytes_transferred方法的典型用法代码示例。如果您正苦于以下问题:Python Response.bytes_transferred方法的具体用法?Python Response.bytes_transferred怎么用?Python Response.bytes_transferred使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在webob.Response的用法示例。


在下文中一共展示了Response.bytes_transferred方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: relay_req

# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import bytes_transferred [as 别名]
    def relay_req(self, req, req_url, path_str_ls, relay_servers, webcaches):
        """ """
        # util
        def get_relay_netloc(relay_server):
            parsed = urlparse(relay_server)
            svr = parsed.netloc.split(':')
            if len(svr) == 1:
                relay_addr = svr[0]
                relay_port = '443' if parsed.scheme == 'https' else '80'
            else:
                relay_addr, relay_port = svr
            return relay_addr, relay_port

        parsed_req_url = urlparse(req_url)
        relay_servers_count = len(relay_servers)
        for relay_server in relay_servers:
            relay_addr, relay_port = get_relay_netloc(relay_server)
            connect_url = urlunparse((parsed_req_url.scheme, 
                                      relay_addr + ':' + relay_port, 
                                      '/' + '/'.join(path_str_ls),
                                      parsed_req_url.params, 
                                      parsed_req_url.query, 
                                      parsed_req_url.fragment))
            if webcaches[relay_server]:
                proxy = webcaches[relay_server]
            else:
                proxy = None

            self.logger.debug('Req: %s %s, Connect to %s via %s' % 
                             (req.method, req.url, connect_url, proxy))

            result = RelayRequest(self.conf, req, connect_url, proxy=proxy, 
                                  conn_timeout=self.conn_timeout, 
                                  node_timeout=self.node_timeout,
                                  chunk_size=self.client_chunk_size)()

            if isinstance(result, HTTPException):
                if relay_servers_count > 1:
                    relay_servers_count -= 1
                    self.logger.info('Retry Req: %s %s, Connect to %s via %s' %
                                     (req.method, req.url, connect_url, proxy))
                    continue
                else:
                    return result

            response = Response(status='%s %s' % (result.status, result.reason))
            response.bytes_transferred = 0

            def response_iter():
                try:
                    while True:
                        with ChunkReadTimeout(self.client_timeout):
                            chunk = result.read(self.client_chunk_size)
                        if not chunk:
                            break
                        yield chunk
                        response.bytes_transferred += len(chunk)
                except GeneratorExit:
                    pass
                except (Exception, TimeoutError):
                    raise
            response.headerlist = result.getheaders()
            response.content_length = result.getheader('Content-Length')
            if response.content_length < 4096:
                response.body = result.read()
            else:
                response.app_iter = response_iter()
                update_headers(response, {'accept-ranges': 'bytes'})
                response.content_length = result.getheader('Content-Length')
            update_headers(response, result.getheaders())
            if req.method == 'HEAD':
                update_headers(response, {'Content-Length': 
                                          result.getheader('Content-Length')})
            response.status = result.status
        return response
开发者ID:dais,项目名称:colony,代码行数:77,代码来源:server.py

示例2: relay_req

# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import bytes_transferred [as 别名]
    def relay_req(self, req, req_url, path_str_ls, relay_servers, webcaches):
        """ """
        # util
        def get_relay_netloc(relay_server):
            parsed = urlparse(relay_server)
            svr = parsed.netloc.split(':')
            if len(svr) == 1:
                relay_addr = svr[0]
                relay_port = '443' if parsed.scheme == 'https' else '80'
            else:
                relay_addr, relay_port = svr
            return relay_addr, relay_port

        relay_id = str(uuid4())

        parsed_req_url = urlparse(req_url)
        relay_servers_count = len(relay_servers)

        connect_path = '/' + '/'.join(path_str_ls)
        if parsed_req_url.path.endswith('/'):
            connect_path = connect_path + '/'

        for relay_server in relay_servers:
            relay_addr, relay_port = get_relay_netloc(relay_server)
            connect_url = urlunparse((parsed_req_url.scheme, 
                                      relay_addr + ':' + relay_port, 
                                      connect_path,
                                      parsed_req_url.params, 
                                      parsed_req_url.query, 
                                      parsed_req_url.fragment))
            if webcaches[relay_server]:
                proxy = webcaches[relay_server]
            else:
                proxy = None

            if req.headers.has_key('x-object-manifest'):
                object_manifest = req.headers['x-object-manifest']
                cont = object_manifest.split('/')[0]
                obj = object_manifest.split('/')[1:]
                cont_parts = cont.split(':')
                if len(cont_parts) >= 2:
                    real_cont = ':'.join(cont_parts[1:])
                    object_manifest = real_cont + '/' + '/'.join(obj)
                    req.headers['x-object-manifest'] = object_manifest

            original_url = req.url

            self.logger.info('Request[%s]: %s %s with headers = %s, Connect to %s (via %s)' % 
                             (str(relay_id),
                              req.method, req.url, req.headers, 
                              connect_url, proxy))

            result = RelayRequest(self.conf, req, connect_url, proxy=proxy, 
                                  conn_timeout=self.conn_timeout, 
                                  node_timeout=self.node_timeout,
                                  chunk_size=self.client_chunk_size)()

            if isinstance(result, HTTPException):
                if relay_servers_count > 1:
                    relay_servers_count -= 1
                    self.logger.info('Retry Req[%s]: %s %s with headers = %s, Connect to %s (via %s)' % 
                                     (str(relay_id),
                                      req.method, req.url, req.headers, 
                                      connect_url, proxy))
                    continue
                else:
                    return result

            if result.getheader('location'):
                location = result.getheader('location')
                parsed_location = urlparse(location)
                parsed_connect_url = urlparse(connect_url)
                if parsed_location.netloc.startswith(parsed_connect_url.netloc):
                    parsed_orig_url = urlparse(original_url)
                    loc_prefix = parsed_orig_url.path.split('/')[1]
                    if parsed_orig_url.path.split('/')[1] != self.req_version_str:
                        rewrited_path = '/' + loc_prefix + parsed_location.path
                    else:
                        rewrited_path = parsed_location.path
                    rewrited_location = (parsed_orig_url.scheme,
                                         parsed_orig_url.netloc,
                                         rewrited_path,
                                         parsed_location.params,
                                         parsed_location.query,
                                         parsed_location.fragment)

            response = Response(status='%s %s' % (result.status, result.reason))
            response.bytes_transferred = 0

            def response_iter():
                try:
                    while True:
                        with ChunkReadTimeout(self.client_timeout):
                            chunk = result.read(self.client_chunk_size)
                        if not chunk:
                            break
                        yield chunk
                        response.bytes_transferred += len(chunk)
                except GeneratorExit:
                    pass
#.........这里部分代码省略.........
开发者ID:AsherBond,项目名称:colony,代码行数:103,代码来源:server.py


注:本文中的webob.Response.bytes_transferred方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。