使用异步请求,并进行请求限制或缓存处理
示例代码如下:
使用Python的requests库进行异步请求:
import asyncio import requests
async def get_data_async(url): loop = asyncio.get_running_loop() resp = await loop.run_in_executor(None, requests.get, url) return resp.json()
async def main_async(): url = "https://api.example.com/data" tasks = [get_data_async(url) for _ in range(10)] result = await asyncio.gather(*tasks) # 处理结果
使用Python的限流库进行请求限制:
from time import sleep from ratelimit import limits, sleep_and_retry
@limits(calls=3, period=1) @sleep_and_retry def make_request(url): response = requests.get(url) return response.json()
for i in range(10): data = make_request("https://api.example.com/data")
使用Python的缓存库进行缓存处理:
from functools import lru_cache
@lru_cache(maxsize=1024) def get_data(url): response = requests.get(url) return response.json()
data_1 = get_data("https://api.example.com/data") data_2 = get_data("https://api.example.com/data") # 这里会从缓存中获取数据,不会发送新的请求
上一篇:API的反向代理