Python基础—重试机制与请求缓存

重试机制

1.retrying模块:Retrying 是一个使用Python编写的通用重试库,用于简化向几乎所有内容添加重试行为的任务

python中的retrying模块提供的retry方法,可以直接以语法糖的形式装饰给需要重试的函数

@retry —— 这样的写法等于永久性的重试

2.安装Retrying模块:

Windows:pip install retrying

Mac:pip3 install retrying

3.@retry中常用属性

①stop_max_attempt_number=5:最多重试5次

②wait_fixed=2000:等待两秒再重试

③wait_random_min=1000, wait_random_max=3000:最少等待1秒,最多等待3秒,在

import requests
from retrying import retry

@retry(stop_max_attempt_number=5, wait_random_min=1000, wait_random_max=3000)
def requests_get(href):
	print('正在请求或正在重试', href)
	response = requests.get(url=href)
	print(response)

URL_List = [
    'https://www.baidu.com/',
    'https://jd.com/',
    'https://a123b.123/',    # 该网站不可访问
    'https://www.taobao.com/'
]

for i in URL_List:
	requests_get(i)

运行结果:正在请求或正在重试 https://www.baidu.com/
         <Response [200]>
         正在请求或正在重试 https://jd.com/
         <Response [200]>
         正在请求或正在重试 https://a123b.123/
         正在请求或正在重试 https://a123b.123/
         正在请求或正在重试 https://a123b.123/
         正在请求或正在重试 https://a123b.123/
         正在请求或正在重试 https://a123b.123/
         # 由于重试5次之后还是无法访问该网页,报错

请求缓存

1.缓存(cache)

requests-cache模块:可以借助install_cache方法在本地留存请求网站的缓存,当有了这个网站的缓存以后,再次请求此网站,优先使用缓存下载的网页内容缓存内容会以sqlite文件的形式保存

2.安装requests-cache模块

Windows:pip install requests-cache

Mac:pip3 install requests-cache

import requests
import requests-cache

requests_cache.install_cache(cache_name='cache_file')
# 如果网页刷新了,我们需要重新加载缓存,先删除已存在的缓存,再重新加载
# requests-cache.clear() ----> 删除缓存
URL = 'https://movie.douban.com/top250?start=0'
Headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
response = requests.get(url=URL, headers=Headers)
print(response.status_code)
print(response.text)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在面对高并发请求时,处理第三方接口需要考虑以下几个方面: 1. 异步调用:使用异步编程模型可以提高处理并发请求的能力。Python中常用的异步编程框架包括asyncio、aiohttp等。通过异步调用,在等待第三方接口响应的同时,可以处理其他请求,提高系统的并发处理能力。 2. 连接池管理:针对第三方接口的连接,可以使用连接池来管理。连接池可以维护一定数量的连接,在需要时从池中获取可用连接,避免频繁创建和销毁连接的开销。 3. 缓存机制:对于第三方接口的响应结果,可以使用缓存机制来减轻高并发请求对接口的压力。合理的缓存策略可以将请求的结果缓存起来,避免复访问第三方接口,提高系统性能。 4. 限流控制:对于高并发请求,为了保护第三方接口不被过度调用,可以实施限流控制策略。例如,可以设置每秒最大请求数、每分钟最大请求数等限制条件,来控制请求的频率。 5. 异常处理:在面对高并发请求时,不可避免地会出现异常情况,如请求超时、连接异常等。需要合理处理这些异常,可以通过机制、异常捕获和处理等方式来增加系统的稳定性。 总的来说,在面对高并发请求时,合理的异步编程、连接池管理、缓存机制、限流控制和异常处理等策略可以帮助提高第三方接口的并发处理能力,确保系统的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

㤅uu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值