Python requests timeout的设置

作者:Bottle 时间:2022-01-27 01:20:40 

背景

最近在搞爬虫,很多小组件里面都使用了 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))

来源:https://blog.csdn.net/zhyl8157121/article/details/108810011

标签:Python,requests,timeout
0
投稿

猜你喜欢

  • 几款好用的前端开发编辑器推荐安利

    2023-11-21 13:30:00
  • 如何使用python docx模块操作word文档

    2022-04-23 12:16:02
  • Perl中的符号 ->;、=>; 和 :: 分别表示什么意思?

    2022-11-28 14:38:48
  • Node.js(安装,启动,测试)

    2024-05-13 09:29:28
  • 解决Keras 与 Tensorflow 版本之间的兼容性问题

    2022-08-04 08:18:53
  • 文档对象模型DOM通俗讲解

    2024-05-13 09:36:55
  • Python如何使用PIL Image制作GIF图片

    2023-08-24 22:42:17
  • 使用Python进行数独求解详解(一)

    2023-12-25 09:39:20
  • XmlUtils JS操作XML工具类

    2024-02-24 14:10:45
  • SSB(SQLservice Service Broker) 入门实例介绍

    2024-01-27 14:19:00
  • 解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题

    2023-11-11 10:38:14
  • Python 数据清洗删除缺失值替换缺失值详情

    2022-03-02 05:46:11
  • Python numpy.interp的实例详解

    2023-01-21 07:07:06
  • python进行OpenCV实战之画图(直线、矩形、圆形)

    2022-05-30 06:36:05
  • vue实现简单全选和反选功能

    2024-05-09 09:29:47
  • 用python 批量更改图像尺寸到统一大小的方法

    2021-04-04 23:47:42
  • python密码学各种加密模块教程

    2021-03-10 05:32:55
  • 详解Python读取和写入操作CSV文件的方法

    2021-03-01 23:13:43
  • Golang 类型断言的具体使用

    2024-05-13 10:45:23
  • Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘

    2022-04-08 18:05:44
  • asp之家 网络编程 m.aspxhome.com