欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

知识点讲解二:关于requests里的timeout()

发布时间:2025/4/5 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 知识点讲解二:关于requests里的timeout() 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

有料,有料,微信搜索 【K同学啊】 关注这个分享干货的博主。
本文 GitHub https://github.com/kzbkzb/Python-AI 已收录,有 Python、深度学习的资料以及我的系列文章。

超时(timeout)

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


连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是 connect() ),Request 会等待的秒数。一个很好的实践方法是把连接超时设为比 3 的倍数略大的一个数值,因为 TCP 数据包重传窗口 (TCP packet retransmission window) 的默认大小是 3。

在爬虫代理这一块我们经常会遇到请求超时的问题,代码就卡在哪里,不报错也没有requests请求的响应。

通常的处理是在requests.get()语句中加入timeout限制请求时间

req = requests.get(url, headers=headers, proxies=proxies, timeout=5)

如果发现设置timeout=5后长时间不响应问题依然存在,可以将timeout里的参数细化
作出如下修改后,问题就消失了

req = requests.get(url, headers=headers, proxies=proxies, timeout=(3,7))

如果在使用timeout过程中遇到ValueError错误提示(类似:ValueError: Timeout value connect was Timeout(connect=2.0, read=2.0, total=None), but it must be an int or float. ),这是python-requests version 2.4.3-4版本的一个bug需要我们更新一下requests

pip install -U requests

对于timeout=(3,7)中参数的具体含义我也不是很清楚,知道含义的童鞋可以留言哈


👇🏻扫一扫下方二维码,获取7900+本电子书👇🏻 《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的知识点讲解二:关于requests里的timeout()的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。