You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免循环调用API?Python程序接收API变更通知方案咨询

可行方案汇总

1. API主动通知(最优解)

如果目标公开API支持Webhook,这是最省心的方案:

  • 用Flask/FastAPI给你的Python程序写一个可公网访问的简单接口,作为接收通知的端点。
  • 在API的后台配置这个Webhook地址,指定你关心的数据变更触发条件。
  • 一旦API数据更新,会主动把新数据POST到你的端点,你直接在端点里处理即可,完全不用主动轮询。

2. 利用HTTP缓存头减少无效请求

如果API不支持Webhook,用HTTP协议自带的缓存机制优化轮询:

  • 第一次请求后,记录响应头里的ETag或Last-Modified值。
  • 后续请求时,在请求头里带上If-None-Match: <ETag值>或If-Modified-Since: <Last-Modified值>。
  • 数据没变化时,API会返回304 Not Modified状态码,你不用解析响应体,直接跳过处理逻辑。
  • 示例代码:
import requests
import time

target_url = "https://目标API地址"
request_headers = {}

while True:
    res = requests.get(target_url, headers=request_headers)
    if res.status_code == 304:
        # 数据未变更,临时延长等待间隔
        time.sleep(30)
    else:
        # 数据更新,处理新内容
        new_data = res.json()
        print("检测到数据更新:", new_data)
        # 更新缓存标识,用于下一次请求
        if "ETag" in res.headers:
            request_headers["If-None-Match"] = res.headers["ETag"]
        if "Last-Modified" in res.headers:
            request_headers["If-Modified-Since"] = res.headers["Last-Modified"]
        time.sleep(5)

3. 自适应轮询策略

如果API连缓存头都不支持,自己实现智能等待逻辑:

  • 初始用5秒间隔轮询,每次对比返回数据是否和上次一致。
  • 当连续多次(比如120次,对应10分钟)返回相同数据时,逐步延长等待间隔(比如从5秒升到30秒、1分钟,直到最大间隔)。
  • 一旦检测到数据变化,立刻恢复短间隔轮询。
  • 核心逻辑示例:
import requests
import time

target_url = "https://目标API地址"
last_result = None
same_count = 0
min_wait = 5
max_wait = 600  # 最大等待10分钟

while True:
    res = requests.get(target_url)
    current_result = res.json()
    
    if current_result == last_result:
        same_count += 1
        # 按连续相同次数动态调整等待时间
        wait_time = min(min_wait * (2 ** (same_count // 20)), max_wait)
    else:
        same_count = 0
        wait_time = min_wait
        last_result = current_result
        print("检测到数据更新:", current_result)
    
    time.sleep(wait_time)

注意事项

  • 用Webhook时要确保你的接收端点有稳定公网访问能力,测试阶段可以用内网穿透工具临时打通。
  • 自适应轮询要设置最大等待间隔,避免长时间不检查错过关键更新。
  • 所有方案都要加异常处理,比如捕获请求超时、API返回5xx错误的情况,防止程序崩溃。

内容的提问来源于stack exchange,提问作者baptiste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:45:38