栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

尝试/使用Python请求模块的正确方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尝试/使用Python请求模块的正确方法?

看一下Requests 异常文档。简而言之:

如果出现网络问题(例如DNS故障,连接被拒绝等),请求将引发

ConnectionError
异常。

如果发生罕见的无效HTTP响应,则请求将引发HTTPError异常。

如果请求超时,Timeout则会引发异常。

如果请求超过配置的最大重定向数,

TooManyRedirects
则会引发异常。

请求显式引发的所有异常都继承自

requests.exceptions.RequestException

要回答你的问题,你显示的内容不会涵盖所有基础。你将只捕获与连接有关的错误,而不是超时的错误。

捕获异常时该做什么实际上取决于脚本/程序的设计。退出是否可以接受?你可以继续重试吗?如果错误是灾难性的,并且你无法继续操作,那么可以的是,有个调用

sys.exit()

你可以捕获基类异常,该异常将处理所有情况:

try:    r = requests.get(url, params={'s': thing})except requests.exceptions.RequestException as e:  # This is the correct syntax    print e    sys.exit(1)

或者,你可以分别捕获它们并执行不同的操作。

try:    r = requests.get(url, params={'s': thing})except requests.exceptions.Timeout:    # Maybe set up for a retry, or continue in a retry loopexcept requests.exceptions.TooManyRedirects:    # Tell the user their URL was bad and try a different oneexcept requests.exceptions.RequestException as e:    # catastrophic error. bail.    print e    sys.exit(1)

正如克里斯蒂安指出:

如果你希望http错误(例如401未经授权)引发异常,可以致电Response.raise_for_status。HTTPError如果响应是http错误,则将引发。

一个例子:

try:    r = requests.get('http://www.google.com/nothere')    r.raise_for_status()except requests.exceptions.HTTPError as err:    print err    sys.exit(1)

将打印:

404 Client Error: Not Found for url: http://www.google.com/nothere


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号