Beispiel #1
0
 def _connect_put(chunk):
     raw_url = chunk["url"]
     parsed = urlparse(raw_url)
     try:
         chunk_path = parsed.path.split('/')[-1]
         h = {}
         h["transfer-encoding"] = "chunked"
         h[chunk_headers["content_id"]] = self.sysmeta['id']
         h[chunk_headers["content_version"]] = self.sysmeta['version']
         h[chunk_headers["content_path"]] = \
             utils.quote(self.sysmeta['content_path'])
         h[chunk_headers["content_chunkmethod"]] = \
             self.sysmeta['chunk_method']
         h[chunk_headers["content_policy"]] = self.sysmeta['policy']
         h[chunk_headers["container_id"]] = self.sysmeta['container_id']
         h[chunk_headers["chunk_pos"]] = chunk["pos"]
         h[chunk_headers["chunk_id"]] = chunk_path
         with ConnectionTimeout(io.CONNECTION_TIMEOUT):
             conn = io.http_connect(
                 parsed.netloc, 'PUT', parsed.path, h)
             conn.chunk = chunk
         return conn, chunk
     except (Exception, Timeout) as e:
         msg = str(e)
         logger.error("Failed to connect to %s (%s)", chunk, msg)
         chunk['error'] = msg
         return None, chunk
Beispiel #2
0
    def _get_response(self, chunk, headers):
        resp = None
        parsed = urlparse(chunk['url'])
        try:
            with ConnectionTimeout(self.connection_timeout):
                conn = io.http_connect(
                    parsed.netloc, 'GET', parsed.path, headers)

            with Timeout(self.response_timeout):
                resp = conn.getresponse()
            if resp.status != 200:
                logger.warning('Invalid GET response from %s', chunk)
                resp = None
        except (Exception, Timeout):
            logger.exception('ERROR fetching %s', chunk)
        return resp