requests中的超时(timeout)设定和捕获异常

为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着timeout参数。在默认情况下,除非显式指定了timeout值,requests是不会自动进行超时处理的。如果没有timeout,你的代码可能会挂起若干分钟甚至更长时间。

一旦你的客户端连接到了服务器并且发送了 HTTP 请求,读取超时指的就是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间)。

如果你制订了一个单一的值作为timeout,如下所示:

r = requests.get('https://github.com', timeout=5)

这一timeout值将会用作 connect 和 read 二者的 timeout。如果要分别制定,就传入一个元组:

r = requests.get('https://github.com', timeout=(3.05, 27))

如果远端服务器很慢,你可以让 Request 永远等待,传入一个None作为timeout值,然后就冲咖啡去吧。

r = requests.get('https://github.com', timeout=None)

超时异常处理

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

try:
    response = requests.get("http://google.com",timeout=0.01)
except requests.exceptions.ConnectTimeout:
    print("request timeout")

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/requests-timeout.html

分类: 计算机技术
推荐阅读:
Windows和Linux系统启用IP转发 在Windows系统下启用IP转发,需要通过修改注册表来实现;Linux系统只需将系统下的/proc/sys/net/ipv4/ip_forward文件值修改为1;
Python ascii()函数 ascii()是 Python 内置函数之一,它可以将一个对象转换为ASCII字符串表示。
requests中读取和设置Cookie 读取和设置Cookie中也非常简单;requests返回的Response中包含一个cookies属性,访问它,将返回一个RequestsCookieJar对象。
什么是可打印字符? 可打印字符是指在文本中可以显示和输出的字符,包括字母、数字、标点符号和一些特殊符号。根据ASCII编码标准,ASCII码范围内的可打印字符的值为 32(空格)到 126(波浪号)。
Rust env宏的用法和示例 在 Rust 中,env宏用于在编译时检查环境变量;该宏在编译时获取指定变量的值,返回一个&str类型,如果环境变量未定义,则会产生编译错误。
如何隐藏WordPress后台地址,保护好你的菊花 默认情况下,Wordpress 的默认后台地址为:http://yourdomain.com/wp-login.php,黑客可以通过这个页面进行暴力穷尽破解,直到破解出你的密码。不论你的密码强度如何,这紧会浪费服务器资源,且网站也会留下安全隐患。