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检查一个数是奇数还是偶数 本文将使用Python检查一个数是奇数还是偶数;偶数是能被2所整除的整数,若不是,那它就是奇数;奇数初以2的余数是1;
Linux终端给命令设置超时 在Linux系统下,有这么个场景,当你运行一条命令,你希望它在指定时间后,如果它还在运行,就自动结束它,那你可以通过这一条命令实现:
Rust的第一个传统Hello World程序 本页将向你展示Rust的第一个传统程序;你将学会如何给程序添加注释、格式化打印文本信息,以及将Rust源码编译成可执行程序;
Python globals()函数 globals() 是 Python 内置函数之一,用于返回当前全局作用域中所有变量的字典。这个字典包含了所有已定义的全局变量,键为变量名,值为对应的值。可以通过修改这个字典中的变量来更新全局作用域中的变量。
Golang中 import cycle not allowed 的解决方法 在Go语言中,在使用import导入相应的包时,你可能会碰到 import cycle not allowed 这样的问题,出现这样的问题是你的包没有规划好,导致包相互依赖;
Python this模块的加密原理 this模块的代码(this模块位于Python安装目录/lib下)。定义了2个变量;字符串s和字典d(被定义两次);s很明显是一段密文,d则是密码字典,key和value对应的是密文和原文;chr((i+13)%26 +c) 则是加密算法,其原理是通过向字典d写入KEY为字符A~Z,VALUE为加密后的字符。然后通过字典遍历的方法,匹配出正确的字符。