• python requests.exceptions.ConnectionError


    今天遇到一个奇葩问题,

    1.r.request.post(url)

    2..print r. status_code

    居然第一步就报错了,原因是url不正确,按道理应该可以走到第二步然后输入404的

    import requests
    try:
        requests.get("http://not.a.real.url/really_not")
    except requests.exceptions.ConnectionError as e:
        pass
    >>> e
    ConnectionError(MaxRetryError("HTTPConnectionPool(host='not.a.real.url', port=80): Max retries exceeded with url: /really_not (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)",),)
    >>> e.args
    (MaxRetryError("HTTPConnectionPool(host='not.a.real.url', port=80): Max retries exceeded with url: /really_not (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)",),)
    >>> e.args[0]
    MaxRetryError("HTTPConnectionPool(host='not.a.real.url', port=80): Max retries exceeded with url: /really_not (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)",)
    >>> dir(e.args[0])
    ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
     '__getitem__', '__getslice__', '__hash__', '__init__', '__module__', '__new__',
     '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__',
     '__str__', '__subclasshook__', '__unicode__', '__weakref__', 'args', 'message', 'pool',
     'reason', 'url']
    >>> e.args[0].reason
    gaierror(-2, 'Name or service not known')
    >>> dir(e.args[0].reason)
    ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
     '__getitem__', '__getslice__', '__hash__', '__init__', '__module__', '__new__',
     '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__',
     '__str__', '__subclasshook__', '__unicode__', '__weakref__', 'args', 'errno', 'filename',
     'message', 'strerror']
    >>> e.args[0].reason.errno
    -2
    

      这样就可以异常设置值

    try:
        r = login_session.post(self.url, data=self.data,headers=self.headers)
    except requests.exceptions.ConnectionError as e:
        # print e.args[0].reason #[Errno 11004] getaddrinfo failed
        if e.args[0].reason.errno== 11004:
            r = 404
    final:
        return r
    

      得到r,即使不是response类型,也能获取值

    getattr(result, 'status_code', result)

     
  • 相关阅读:
    键盘弹出后上提view隐藏后下拉view还原并修改scroll过程中旋转屏幕到竖屏view显示错误
    iOS UI Element Usage
    ios notification
    retain和copy还有assign的区别
    UVA-11728 Alternate Task
    UVA-11490 Just Another Problem
    UVA-10127 Ones (数论)
    UVA-10710 Skyscraper Floors (找规律+幂取模)
    UVA-10539 Almost Prime Numbers
    UVA-10692 Huge Mods
  • 原文地址:https://www.cnblogs.com/alamZ/p/7382633.html
Copyright © 2020-2023  润新知