python-requests请求超时解决方案

这篇具有很好参考价值的文章主要介绍了python-requests请求超时解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        python程序根据url从互联网上批量获取数据时,设置HTTP或Socket超时,来防止爬虫爬取某个页面时间过长,导致程序卡置不前。

1、socket

全局设置。

import socket

socket.setdefaulttimeout(1)

t:代表经过t秒后,如果还未下载成功,自动跳入下一次操作,此次下载失败 。

2、添加timeout

使用timeout 参数可以设定等待连接的秒数,如果等待超时,Requests会抛出异常。

示例代码1:

import requests

res = requests.get('https://github.com', timeout=0.01)
print(res)

运行结果:

python requests 超时,爬虫,python,爬虫,requests

示例代码2:

import requests

res = requests.get('https://github.com', timeout=10)
print(res)

运行结果: 

python requests 超时,爬虫,python,爬虫,requests

注意:timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)。

3、HTTPAdapter(max_retries=3)重试

示例代码:

import time
import requests
from requests.adapters import HTTPAdapter


s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=3))
s.mount('https://', HTTPAdapter(max_retries=3))

print(time.strftime('%Y-%m-%d %H:%M:%S'))

try:
    res = s.get('https://github.com', timeout=2)
    print(res)
except requests.exceptions.RequestException as e:
    print(e)

print(time.strftime('%Y-%m-%d %H:%M:%S'))

运行结果:

python requests 超时,爬虫,python,爬虫,requests

注意:max_retries 为最大重试次数,重试3次,加上最初的一次请求,一共是4次,所以上述代码运行耗时至少是8秒而不是6秒。

4、捕捉异常

示例代码1:

import requests


def get_html(url, timeout=5):
    i = 0
    while i < 3:
        try:
            html = requests.get(url, timeout=timeout)
            return html.text
        except requests.exceptions.RequestException as e:
            i += 1
            print(e)


res = get_html('https://github.com', timeout=0.1)
print(res)

运行结果:

python requests 超时,爬虫,python,爬虫,requests

示例代码2:  【试图提大timeout的值】

import requests


def get_html(url, timeout=5):
    i = 0
    while i < 3:
        try:
            html = requests.get(url, timeout=timeout)
            return html.text
        except requests.exceptions.RequestException as e:
            i += 1
            print(e)


res = get_html('https://github.com', timeout=10)
print(res)

运行结果:

python requests 超时,爬虫,python,爬虫,requests文章来源地址https://www.toymoban.com/news/detail-573106.html

到了这里,关于python-requests请求超时解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【uniapp】uni.request请求跨域问题解决方案

    例如,运行H5页面,请求一个地址资源,如果不是本站地址,浏览器就会报跨域错误,这样访问受限 例如,项目代码里是这样写的,运行H5测试 因为 https://gitcode.net 不是本站地址,根据浏览器同源策略,是会报跨域错误, 打开项目的 manifest.json 文件,以源码视图查看,添加以

    2024年02月05日
    浏览(26)
  • python pip超时解决方案

    当执行 pip3 install 命令时出现超时错误,通常是由于网络连接不稳定或网络速度较慢引起的。为了解决这个问题,你可以尝试以下方法: 使用 -i 选项指定 pip 源 可以使用 -i 选项指定 pip 源,以加速包的下载和安装。你可以选择一个速度较快的 pip 源,例如阿里云 pip 镜像或清

    2024年02月07日
    浏览(26)
  • Python网页请求超时如何解决

    在进行网络爬虫项目时,我们经常需要发送大量的请求来获取所需的数据。然而,由于网络环境的不稳定性,请求可能会因为超时而失败。请求超时可能导致数据获取不完整,影响爬虫的效率和准确性。此外,频繁的请求超时可能会被目标网站视为恶意行为,导致IP被封禁或

    2024年02月09日
    浏览(26)
  • SpringBoot之Post请求@RequestBody为空抛出Required request body is missing异常的解决方案

    org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing 出现异常的原因:body为空,但是@RequestBody注解默认请求体不能为空。 这个纯属粗心大意的问题~ 如果是刚刚开发的项目,那么建议这样写。如果已经存在的项目,肯定不能这样写,后面会介绍另外一

    2024年02月13日
    浏览(36)
  • python爬取 HTTP_2 网站超时问题的解决方案

    问题背景 在进行网络数据爬取时,使用 Python 程序访问支持 HTTP/2 协议的网站时,有时会遇到超时问题。这可能会导致数据获取不完整,影响爬虫程序的正常运行。 问题描述 在实际操作中,当使用 Python 编写的爬虫程序访问支持 HTTP/2 协议的网站时,可能会遇到超时异常。即

    2024年02月04日
    浏览(25)
  • 【python修复bug】—— HTTP_2 网站超时问题的解决方案

    在进行网络数据爬取时,使用 Python 程序访问支持 HTTP/2 协议的网站时,有时会遇到超时问题。这可能会导致数据获取不完整,影响爬虫程序的正常运行。 问题描述 在实际操作中,当使用 Python 编写的爬虫程序访问支持 HTTP/2 协议的网站时,可能会遇到超时异常。即使尝试强制

    2024年01月18日
    浏览(29)
  • python requests设置连接超时时间

    这段代码的主要作用是使用requests库发出一个GET请求,并设置连接超时时间为5秒钟,读取超时时间为10秒钟。 如果请求超时,就会抛出requests.exceptions.Timeout异常,并在\\\"except\\\"语句块中进行处理。如果发生其他类型的错误,如连接错误,就会抛出requests.exceptions.ConnectionError异常,

    2024年02月13日
    浏览(46)
  • python requests爬虫返回403错误?加了所有特征的请求头+代理也解决不了的问题处理

    【疑惑】:使用python的requests库发起get或post请求返回403代码错误,使用postman发起请求发现状态码200竟然成功了。这是什么原因?首先排除ip问题,ip有问题的话postman也访问不了。难道是headers出现了问题吗,通过对比发现也不是headers的问题。那就奇了怪了? 【解疑】:其实遇

    2024年02月15日
    浏览(24)
  • axios请求超时,设置重新请求的完美解决方法

    自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,如果服务器或者网络不稳定掉包了, 你们该如何处理呢? 下面我给你们分享一下我的经历。 具体原因 最近公司在做一个项目, 服务端数据接口用的是Php输出的API, 有时候在调用的过程中会失败, 在谷歌浏

    2024年02月20日
    浏览(30)
  • 调用OpenAi出现连接超时的解决方案

    在向https://api.openai.com/v1/completions发起http请求之前,使用java.net包下面的Proxy进行代理。 代码如下: connection.setRequestProperty(\\\"Authorization\\\", \\\"Bearer \\\" + openAiApiKey); connection.setRequestProperty(\\\"Content-Type\\\", \\\"application/json\\\"); 我在使用的时候忘记设置了Content-Type,结果一直报错,后面反复观看

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包