Python requests.packages.urllib3.exceptions 模块,ProtocolError() 实例源码

我们从Python开源项目中,提取了以下12个代码示例,用于说明如何使用requests.packages.urllib3.exceptions.ProtocolError()

项目:diycrate    作者:jheld    | 项目源码 | 文件源码
def get_folder(client, folder_id):
        """

        :param client:
        :param folder_id:
        :return:
        """
        folder = None
        num_retry = 15
        for x in range(num_retry):
            try:
                folder = client.folder(folder_id=folder_id).get()
                break
            except (ConnectionError, BrokenPipeError, ProtocolError, ConnectionResetError, BoxAPIException):
                crate_logger.debug(traceback.format_exc())
                if x >= num_retry - 1:
                    crate_logger.debug('Failed for the last time to get the folder: {}'.format(folder_id))
        return folder
项目:docker-enforcer    作者:piontec    | 项目源码 | 文件源码
def get_params(self, container_id: str) -> Optional[Dict[str, Any]]:
        if self._config.cache_params and container_id in self._params_cache:
            logger.debug("Returning cached params for container {0}".format(container_id))
            return self._params_cache[container_id]

        logger.debug("[{0}] Starting to fetch params for {1}".format(threading.current_thread().name, container_id))
        try:
            params = self._client.inspect_container(container_id)
        except NotFound as e:
            logger.warning("Container {0} not found - {1}.".format(container_id, e))
            return None
        except (ReadTimeout, ProtocolError, JSONDecodeError) as e:
            logger.error("Communication error when fetching params for container {0}: {1}".format(container_id, e))
            return {}
        except Exception as e:
            logger.error("Unexpected error when fetching params for container {0}: {1}".format(container_id, e))
            return {}
        logger.debug("[{0}] Params fetched for {1}".format(threading.current_thread().name, container_id))

        if not self._config.cache_params:
            return params

        logger.debug("[{0}] Storing params of {1} in cache".format(threading.current_thread().name, container_id))
        self._params_cache[container_id] = params
        return params
项目:diycrate    作者:jheld    | 项目源码 | 文件源码
def get_box_folder(client, cur_box_folder, folder_id, retry_limit):
    """

    :param client:
    :param cur_box_folder:
    :param folder_id:
    :param retry_limit:
    :return:
    """
    for i in range(retry_limit):
        try:
            box_folder = client.folder(folder_id=folder_id).get()
            cur_box_folder = box_folder
            break
        except (ConnectionError, BrokenPipeError, ProtocolError, ConnectionResetError, BoxAPIException):
            if i + 1 >= retry_limit:
                crate_logger.warn('Attempt ({retry_count}) out of ({max_count}); Going to give '
                                  'up on the write event because: {trace}'.format(retry_count=i,
                                                                                  max_count=retry_limit,
                                                                                  trace=traceback.format_exc()))
            else:
                crate_logger.warn('Attempt ({retry_count}) '
                                  'out of ({max_count}): {trace}'.format(retry_count=i,
                                                                         max_count=retry_limit,
                                                                         trace=traceback.format_exc()))
    return cur_box_folder
项目:TwitterCompetitionBot    作者:BenAllenUK    | 项目源码 | 文件源码
def _iter_stream(self):
        """Stream parser.

        :returns: Next item in the stream (may or may not be 'delimited').
        :raises: TwitterConnectionError, StopIteration
        """
        while True:
            item = None
            buf = bytearray()
            stall_timer = None
            try:
                while True:
                    # read bytes until item boundary reached
                    buf += self.stream.read(1)
                    if not buf:
                        # check for stall (i.e. no data for 90 seconds)
                        if not stall_timer:
                            stall_timer = time.time()
                        elif time.time() - stall_timer > STREAMING_TIMEOUT:
                            raise TwitterConnectionError('Twitter stream stalled')
                    elif stall_timer:
                        stall_timer = None
                    if buf[-2:] == b'\r\n':
                        item = buf[0:-2]
                        if item.isdigit():
                            # use byte size to read next item
                            nbytes = int(item)
                            item = None
                            item = self.stream.read(nbytes)
                        break
                yield item
            except (ConnectionError, ProtocolError, ReadTimeout, ReadTimeoutError, 
                    SSLError, ssl.SSLError, socket.error) as e:
                raise TwitterConnectionError(e)
            except AttributeError:
                # inform iterator to exit when client closes connection
                raise StopIteration
项目:docker-enforcer    作者:piontec    | 项目源码 | 文件源码
def check_container(self, container_id: str, check_source: CheckSource, remove_from_cache: bool=False) \
            -> Optional[Container]:
        try:
            if remove_from_cache:
                self.remove_from_cache(container_id)

            if not self._config.disable_params:
                params = self.get_params(container_id)
            else:
                params = {}
            if not self._config.disable_metrics:
                logger.debug("[{0}] Starting to fetch metrics for {1}".format(threading.current_thread().name,
                                                                              container_id))
                metrics = self._client.stats(container=container_id, decode=True, stream=False)
            else:
                metrics = {}
            logger.debug("[{0}] Fetched data for container {1}".format(threading.current_thread().name, container_id))
        except NotFound as e:
            logger.warning("Container {0} not found - {1}.".format(container_id, e))
            return None
        except (ReadTimeout, ProtocolError, JSONDecodeError) as e:
            logger.error("Communication error when fetching info about container {0}: {1}".format(container_id, e))
            return None
        except Exception as e:
            logger.error("Unexpected error when fetching info about container {0}: {1}".format(container_id, e))
            return None
        if params is None or metrics is None:
            logger.warning("Params or metrics were not fetched for container {}. Not returning container."
                           .format(container_id))
            return None
        return Container(container_id, params, metrics, 0, check_source)
项目:docker-enforcer    作者:piontec    | 项目源码 | 文件源码
def check_containers(self, check_source: CheckSource) -> Iterable[Container]:
        with self._padlock:
            if self._check_in_progress:
                logger.warning("[{0}] Previous check did not yet complete, consider increasing CHECK_INTERVAL_S"
                               .format(threading.current_thread().name))
                return
            self._check_in_progress = True
        logger.debug("Periodic check start: connecting to get the list of containers")
        self.last_check_containers_run_start_timestamp = datetime.datetime.utcnow()
        try:
            containers = self._client.containers(quiet=True)
            logger.debug("[{0}] Fetched containers list from docker daemon".format(threading.current_thread().name))
        except (ReadTimeout, ProtocolError, JSONDecodeError) as e:
            logger.error("Timeout while trying to get list of containers from docker: {0}".format(e))
            with self._padlock:
                self._check_in_progress = False
            self.last_periodic_run_ok = False
            return
        except Exception as e:
            logger.error("Unexpected error while trying to get list of containers from docker: {0}".format(e))
            with self._padlock:
                self._check_in_progress = False
            self.last_periodic_run_ok = False
            return
        ids = [container['Id'] for container in containers]
        for container_id in ids:
            container = self.check_container(container_id, check_source)
            if container is None:
                continue
            yield container
        logger.debug("Containers checked")
        if self._config.cache_params:
            logger.debug("Purging cache")
            self.purge_cache(ids)
        self.last_periodic_run_ok = True
        self.last_check_containers_run_end_timestamp = datetime.datetime.utcnow()
        self.last_check_containers_run_time = self.last_check_containers_run_end_timestamp \
            - self.last_check_containers_run_start_timestamp
        logger.debug("Periodic check done")
        with self._padlock:
            self._check_in_progress = False
项目:docker-enforcer    作者:piontec    | 项目源码 | 文件源码
def get_events_observable(self) -> Iterable[Any]:
        successful = False
        ev = None
        while not successful:
            try:
                ev = self._client.events(decode=True)
            except (ReadTimeout, ProtocolError, JSONDecodeError) as e:
                logger.error("Communication error when subscribing for container events, retrying in 5s: {0}".format(e))
                time.sleep(5)
            except Exception as e:
                logger.error("Unexpected error when subscribing for container events, retrying in 5s: {0}".format(e))
                time.sleep(5)
            successful = True
        return ev
项目:docker-enforcer    作者:piontec    | 项目源码 | 文件源码
def kill_container(self, container: Container) -> None:
        try:
            self._client.stop(container.params['Id'])
        except (ReadTimeout, ProtocolError) as e:
            logger.error("Communication error when stopping container {0}: {1}".format(container.cid, e))
        except Exception as e:
            logger.error("Unexpected error when stopping container {0}: {1}".format(container.cid, e))
项目:edata    作者:ap-Codkelden    | 项目源码 | 文件源码
def show_lastload():
    try:
        r = requests.get(
            EDATA_API_URL + '/lastload',
            headers=HEADERS,
            )
        lastload_json = r.json()
    except (ConnectionError, ProtocolError) as e:
        print("??????? ?'???????: `{}`".format(e.args[0].args[0]))
        sys.exit(1)
    else:
        d = iso8601_to_date(lastload_json['response']['lastload'],
                            lastload=True)
        print(d)
        sys.exit(0)
项目:diycrate    作者:jheld    | 项目源码 | 文件源码
def upload_queue_processor():
    """
    Implements a simple re-try mechanism for pending uploads
    :return:
    """
    while True:
        if upload_queue.not_empty:
            callable_up = upload_queue.get()  # blocks
            # TODO: pass in the actual item being updated/uploaded, so we can do more intelligent retry mechanisms
            was_list = isinstance(callable_up, list)
            last_modified_time = oauth = None
            if was_list:
                last_modified_time, callable_up, oauth = callable_up
            args = callable_up.args if isinstance(callable_up, partial) else None
            num_retries = 15
            for x in range(15):
                try:
                    ret_val = callable_up()
                    if was_list:
                        item = ret_val  # is the new/updated item
                        if isinstance(item, File):
                            client = Client(oauth)
                            file_obj = client.file(file_id=item.object_id).get()
                            redis_set(r_c, file_obj, last_modified_time, box_dir_path=BOX_DIR)
                    break
                except BoxAPIException as e:
                    crate_logger.debug('{the_args}, {the_trace}'.format(the_args=args,
                                                                        the_trace=traceback.format_exc()))
                    if e.status == 409:
                        crate_logger.debug('Apparently Box says this item already exists...'
                                           'and we were trying to create it. Need to handle this better. message: {}'.format(e.message))
                        break
                except (ConnectionError, BrokenPipeError, ProtocolError, ConnectionResetError):
                    time.sleep(3)
                    crate_logger.debug('{the_args}, {the_trace}'.format(the_args=args,
                                                                        the_trace=traceback.format_exc()))
                    if x >= num_retries - 1:
                        crate_logger.debug('Upload giving up on: {}'.format(callable_up))
                        # no immediate plans to do anything with this info, yet.
                        uploads_given_up_on.append(callable_up)
                except (TypeError, FileNotFoundError):
                    crate_logger.debug(traceback.format_exc())
                    break
            upload_queue.task_done()
项目:orangecloud-client    作者:antechrestos    | 项目源码 | 文件源码
def upload(self, file_path, folder_id=None):
        mime_type, _ = guess_type(file_path)
        mime_type = 'application/octet-stream' if mime_type is None else mime_type
        file_name = os.path.basename(file_path)
        self._debug('upload - %s(%s) => %s', file_name, mime_type,
                    folder_id if folder_id is not None else 'root')
        file_stats = os.stat(file_path)
        file_name_encoded = unicode(file_name, "utf-8", errors="ignore")
        description = dict(name=file_name_encoded, size=str(file_stats.st_size))
        if folder_id is not None:
            description['folder'] = folder_id

        def send():
            with open(file_path, 'rb') as f:
                uri = '/files/content'
                m = MultipartEncoder(
                    fields=dict(description=json.dumps(dict(description)),
                                file=(file_name_encoded, f, mime_type))
                )
                response = self._call(self.client.post, '%s%s%s' % (URL_UPLOAD, BASE_URI, uri),
                                      data=m,
                                      headers={'Content-Type': m.content_type})
                self._debug('upload - %s - %s', file_name, response.text)
                return AbstractDomain._read_response(response)

        try:
            return send()
        except ClientError, ex:
            if Files._is_token_expired_on_upload(ex.response):
                self._logger.info('upload  - token invalid - refreshing token')
                self.client._refresh_token()
                send()
            else:
                raise
        except ConnectionError, conn:
            if len(conn.args) == 1 and type(conn.args[0]) == ProtocolError :
                protocol_error = conn.args[0]
                if len(protocol_error.args) == 2:
                    str_error, error = protocol_error.args
                    if error.errno == errno.ECONNRESET:
                        self._logger.info('upload  - connection reset - refreshing token')
                        self.client._refresh_token()
                        self._logger.info('upload  - resending the payload')
                        return send()
            raise
        except BaseException, ex:
            self._logger.error('upload - unmanaged exception - %s', type(ex))
项目:TwitterCompetitionBot    作者:BenAllenUK    | 项目源码 | 文件源码
def request(self, resource, params=None, files=None):
        """Request a Twitter REST API or Streaming API resource.

        :param resource: A valid Twitter endpoint (ex. "search/tweets")
        :param params: Dictionary with endpoint parameters or None (default)
        :param files: Dictionary with multipart-encoded file or None (default)

        :returns: TwitterResponse
        :raises: TwitterConnectionError
        """
        resource, endpoint = self._get_endpoint(resource)
        if endpoint not in ENDPOINTS:
            raise Exception('Endpoint "%s" unsupported' % endpoint)
        session = requests.Session()
        session.auth = self.auth
        session.headers = {'User-Agent': USER_AGENT}
        method, subdomain = ENDPOINTS[endpoint]
        url = self._prepare_url(subdomain, resource)
        if 'stream' in subdomain:
            session.stream = True
            timeout = STREAMING_TIMEOUT
            # always use 'delimited' for efficient stream parsing
            if not params:
                params = {}
            params['delimited'] = 'length'
            params['stall_warning'] = 'true'
        else:
            session.stream = False
            timeout = REST_TIMEOUT
        if method == 'POST':
            data = params
            params = None
        else:
            data = None
        try:
            r = session.request(
                method,
                url,
                data=data,
                params=params,
                timeout=(CONNECTION_TIMEOUT,timeout),
                files=files,
                proxies=self.proxies)
        except (ConnectionError, ProtocolError, ReadTimeout, ReadTimeoutError, 
                SSLError, ssl.SSLError, socket.error) as e:
            raise TwitterConnectionError(e)
        return TwitterResponse(r, session.stream)