随笔 - 934, 文章 - 0, 评论 - 249, 阅读 - 345万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

python requests库的超时设置

Posted on   蝈蝈俊  阅读(687)  评论(0编辑  收藏  举报

在 requests 库中, timeout 参数其实是一个比较复杂的概念。如果你直接把一个数字作为 timeout 参数的值,那么这个数字代表的是连接(connection)和读取(read)两个阶段的总时间,而不是各自的时间。换句话说,如果你设置 timeout=5,那么连接和读取阶段的总时间就不能超过 5 秒。


import requests

url = 'http://example.com'
data = {'key': 'value'}

try:
    r = requests.post(url, data=data, timeout=5.0)
except requests.exceptions.Timeout:
    print("请求超时")
# 处理其他可能的异常
except requests.exceptions.RequestException as err:
    print("请求出错:", err)


然而,有时候你可能想要分别为连接和读取阶段设置不同的超时时间。在这种情况下,你可以把一个二元元组 (connect_timeout, read_timeout) 作为 timeout 参数的值。例如,你可以这样设置:

r = requests.post(url, data=data, timeout=(1.0, 4.0))

在这个例子中,连接阶段的超时时间是 1 秒,读取阶段的超时时间是 4 秒。

注意,这个设置方法只在 requests 库的 2.4.0 及以后的版本中可用。在早期的版本中, timeout 参数只接受一个数字,用来表示连接和读取阶段的总超时时间。

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2014-06-20 虚拟机下centos时间不正确的方便解决方法
点击右上角即可分享
微信分享提示