Python requests timeout的设置

 更新时间:2021年04月16日 14:20:08   作者:Bottle  
这篇文章主要介绍了Python requests timeout的设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景

最近在搞爬虫,很多小组件里面都使用了 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现一行代码自动绘制艺术画

    Python实现一行代码自动绘制艺术画

    DiscoArt 是一个很牛的开源模块,它能根据你给定的关键词自动绘画。本文就将利用这一模块实现一行代码自动绘制艺术画,需要的可以参考一下
    2022-12-12
  • Python numpy.add函数的具体使用

    Python numpy.add函数的具体使用

    本文主要介绍了Python numpy.add函数的具体使用,numpy.add函数不仅仅是一个简单的加法操作,更是一个功能强大且高度优化的工具,可适用于各种复杂的数值计算和数据处理任务,感兴趣的可以了解一下
    2023-12-12
  • 手写一个python迭代器过程详解

    手写一个python迭代器过程详解

    这篇文章主要介绍了手写一个python迭代器过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python机器学习之线性回归详解

    python机器学习之线性回归详解

    这篇文章主要介绍了python机器学习之线性回归详解,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • Python读取csv文件做K-means分析详情

    Python读取csv文件做K-means分析详情

    这篇文章主要介绍了Python读取csv文件做K-means分析详情,基于时间序列的分析2D读取时间列和高程做一下分析。下文更多详细介绍需要的小伙伴可以参考一下
    2022-03-03
  • Python语法中的模糊语义

    Python语法中的模糊语义

    这篇文章主要介绍的是Python语法中的模糊语义,下面文章具体内容包括切片不执行越界检查和报错、空列表的创建、闭包的延迟绑定,需要的朋友可以参考一下
    2021-11-11
  • 详解Python调用华为API实现图像标签

    详解Python调用华为API实现图像标签

    华为云图像标签可识别上千种通用物体以及数百种场景标签,一个图像可包含多个标签内容,语义内容非常丰富。本文将通过Python调用华为API实现图像标签,需要的可以参考一下
    2022-04-04
  • PyQt4实现下拉菜单可供选择并打印出来

    PyQt4实现下拉菜单可供选择并打印出来

    这篇文章主要为大家详细介绍了PyQt4实现下拉菜单可供选择并打印出来,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python使用datetime.utcnow()问题解析

    python使用datetime.utcnow()问题解析

    这篇文章主要介绍了python使用datetime.utcnow()问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • PyQt5 QSerialPort子线程操作的实现

    PyQt5 QSerialPort子线程操作的实现

    这篇文章主要介绍了PyQt5 QSerialPort子线程操作的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论