文章内容

2019/10/26 14:33:53,作 者: 黄兵

Requests异常处理

在网络请求中,由于网络不稳定以及服务器过载等各种问题导致连接不可用,在程序中这些都会导致异常。

Requests异常处理的处理就显得非常有必要。

下面是Requests的一些异常:

遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常。

如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。

若请求超时,则抛出一个 Timeout 异常。

若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。

所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException


下面是一个处理Requests异常的范例:

    @staticmethod
    def request_handle(uri, request_uri):
        """处理request的请求
        :returns: 如果成功,返回response_text,处理失败,返回False
        """
        try:
            request_ip = requests.get(uri)
        except requests.exceptions.RequestException as e:
            logging.warning('请求出现了错误,远程服务器地址: {remote_uri} , 具体错误内容: {error_message}'
                            .format(error_message=e, remote_uri=request_uri))
            return False
        # 记录请求超限
        IP_Filter.recording_many_request_proxy(request_ip, request_uri)
        # 处理JSON解码问题
        try:
            response_text = request_ip.json()
        except json.decoder.JSONDecodeError as e:
            logging.warning('解析Json的时候出现了问题,具体错误内容: {error_message}'.format(error_message=e))
            return False
        return response_text



参考资料:

1、Requests快速上手


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Requests异常处理

分享到:

发表评论

评论列表