广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python requests timeout的设置
  • 549
分享到

Python requests timeout的设置

2024-04-02 19:04:59 549人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

背景 最近在搞爬虫,很多小组件里面都使用了 python 的 requests 库,很好用,很强大。 但最近发现很多任务总是莫名其妙的卡住,不报错,但是就是不继续执行。 排查了一圈

背景

最近在搞爬虫,很多小组件里面都使用了 python 的 requests 库,很好用,很强大。

但最近发现很多任务总是莫名其妙的卡住,不报错,但是就是不继续执行。

排查了一圈,最后把问题定在 requests 的 timeout 机制上。

注:本文讨论的是 Python 的第三方模块 requests,并不是 Python 内建模块 urllib 中的 request 模块,请注意区分。

如何设置超时时间

requests 设置超时时间有两种方式。

一种是设置单一值作为 timeout,如下所示:


r = requests.get('https://GitHub.com', timeout=5)

这时, timeout 值将会用作 connect 和 read 二者的共同的超时时间。

另一种是分别制定连接超时和读取超时的时间,如下所示:


r = requests.get('Https://github.com', timeout=(3.05, 27))

这里前面的 3.05 表示连接超时时间,27 表示读取超时时间。

官方一般推荐大家把连接超时时间设置为比 3 的整数倍稍微大一点的时间,比如 3.05、6.05 这样,具体原因见 这里。


上面提到的两种超时时间,连接超时和读取超时,并不是都有默认超时时间。

连接超时的默认时间是 21s,而读取超时没有默认时间,换句话说,不会超时。

也就是说,如果一个请求,连接成功了,正在读取数据,但是此时服务器出现了什么问题,或者代理出现了什么问题,那么,这个请求就会一直卡住,不会报错,也不会继续。

天长地久。

避坑

所以,为了避免出现这样的情况,给你的 requests 加上超时时间吧,尤其是请求量巨大的时候。

常在河边走,哪有不湿鞋。

参考资料

Requests 官方文档

补:python requests timeout不起作用 卡死

在使用python 的requests进行数据请求时不设置timeout大部分时候,是会有超时异常的,超时时间大概是20多秒

但是有时候超时会不起作用需要自己制定超时时间,使用timeout=60


response = requests.get(url, headers=headers, proxies=proxies,timeout=60)

但是有时候设置此参数之后仍然会有几分钟甚至是十几分钟没有返回结果可以使用timeout=(50, 60)

timeout参数也可以传入一个包含两个简单浮点数的元组,用来分别设置请求超时时间和读取超时时间。


response = requests.get(url, headers=headers, proxies=proxies,timeout=(50, 60))

到此这篇关于Python requests timeout的设置的文章就介绍到这了,更多相关Python requests timeout内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python requests timeout的设置

本文链接: https://www.lsjlt.com/news/123799.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作