Exemplo n.º 1
0
 def _connect_put(chunk):
     raw_url = chunk["url"]
     parsed = urlparse(raw_url)
     try:
         chunk_path = parsed.path.split('/')[-1]
         hdrs = {}
         hdrs["transfer-encoding"] = "chunked"
         hdrs[chunk_headers["content_id"]] = sysmeta['id']
         hdrs[chunk_headers["content_version"]] = sysmeta['version']
         hdrs[chunk_headers["content_path"]] = utils.quote(obj_name)
         hdrs[chunk_headers["content_size"]] = sysmeta['content_length']
         hdrs[chunk_headers["content_chunkmethod"]] = \
             sysmeta['chunk_method']
         hdrs[chunk_headers["content_mimetype"]] = sysmeta['mime_type']
         hdrs[chunk_headers["content_policy"]] = sysmeta['policy']
         hdrs[chunk_headers["content_chunksnb"]] = len(chunks)
         hdrs[chunk_headers["container_id"]] = \
             utils.name2cid(account, container)
         hdrs[chunk_headers["chunk_pos"]] = chunk["pos"]
         hdrs[chunk_headers["chunk_id"]] = chunk_path
         with ConnectionTimeout(CONNECTION_TIMEOUT):
             conn = http_connect(
                 parsed.netloc, 'PUT', parsed.path, hdrs)
             conn.chunk = chunk
         return conn
     except (Exception, Timeout):
         pass
Exemplo n.º 2
0
 def _get_request(self, chunk):
     # connect to chunk
     try:
         with ConnectionTimeout(self.connection_timeout):
             raw_url = chunk["url"]
             parsed = urlparse(raw_url)
             conn = http_connect(parsed.netloc, 'GET', parsed.path,
                                 self.request_headers)
         with Timeout(self.response_timeout):
             source = conn.getresponse(True)
             source.conn = conn
     except (Exception, Timeout):
         logger.exception('Connection failed to %s', chunk)
         return False
     if source.status in (200, 206):
         self.status = source.status
         self._headers = source.getheaders()
         self.sources.append((source, chunk))
         return True
     else:
         logger.warn("Invalid GET response from %s", chunk)
     return False
Exemplo n.º 3
0
    def _get_chunk_source(self):
        source = None
        for chunk in self.chunks:
            try:
                with ConnectionTimeout(CONNECTION_TIMEOUT):
                    raw_url = chunk["url"]
                    parsed = urlparse(raw_url)
                    conn = http_connect(parsed.netloc, 'GET', parsed.path,
                                        self.headers)
                source = conn.getresponse(True)
                source.conn = conn

            except (Timeout, Exception):
                self.failed_chunks.append(chunk)
                continue
            if source.status not in (200, 206):
                self.failed_chunks.append(chunk)
                close_source(source)
                source = None
            else:
                break

        return source