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

分类: 计算机技术
推荐阅读:
Python format()函数 Python 内置的 format() 函数是一种字符串格式化输出的方法,可以将变量插入到字符串中,并控制输出的格式。
MySQL ACOS() 反余弦函数 ACOS(x)函数返回x的反余弦值;如果x不在定义域[-1,1]中,将返回NULL;
Python实现线性搜索(linear search) 比如说我有数组data,1000个元素,要从里面找x;线性搜索,就是从头找到尾,速度最慢,但是适用性最广。
Rust入门示例教程 该教程是一个可运行示例的集合,这些示例说明了各种Rust概念和标准库;如果你不喜欢阅读大量的文档来学习编程语言,那么该示例教程就很适合你,它不仅覆盖了你要学习的知识,而且有很多的篇幅来解释代码;
创建WEB服务来访问当前目录 在Linux系统下,只需要一条简单的命令即可实现:创建一个WEB服务用来访问当前的目录。
学习PySide6控件的准备 这不是一份Python语言的学习教程,建议你在开始前先掌握Python语言基础和面向对象编程的概念;