• 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)

     
  • 相关阅读:
    常用函数
    PostgreSql那点事(文件读取写入、命令执行的办法)
    如何检测Windows中的横向渗透攻击
    小米笔记本pro版bios经常找不到硬盘
    grunt教程
    nodejs廖雪峰大神教程
    ClickOnce是什么?如何使用?
    asp.net中的ORA-12154: TNS: 无法解析指定的连接标识符
    未能加载文件或程序集 ICSharpCode.SharpZipLib
    PL/SQL 循环
  • 原文地址:https://www.cnblogs.com/alamZ/p/7382633.html
Copyright © 2020-2023  润新知