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

分类: 计算机技术
推荐阅读:
禁用Visual Studio自动下载更新 近日,作者使用Visual Studio发现,Visual Studio会自己在后台下载更新内容,然后提醒你是否安装;因为Visual Studio的更新包体积庞大,不仅占用网络资源也会消耗磁盘性能,所以我决定禁用它;
PySide6隐藏和显示窗口(QWidget) PySide6.QtWidgets.QWidget类的成员函数hide()可用于隐藏窗口,show()可用于显示窗口;
C语言memmove()函数:在内存中移动一段数据 memmove()是C语言标准库中的一个函数,用于在内存中移动一段数据,其原理是通过复制数据到临时缓冲区来实现移动;
PySide6 keyPressEvent:处理键盘按键按下的方法 keyPressEvent是在PySide6中用于处理键盘按键按下事件的方法。当用户在应用程序的窗口中按下键盘上的按键时,会触发keyPressEvent方法。您可以在此方法中编写代码,以响应按键事件并执行相应的操作。
Python读写JSON文件、解析JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式;本文将通过多个例子讲解在Python中如何读写json文件,如何解析JSON内容,以及如何将JSON对象与Python字典相互转换;
Python字符串替换函数replace() replace()是Python中的一个内置函数;可通过replace()函数将字符串中的一部分替换成另一部分,并返回一个新的副本;