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

使用Python调用World Weather Online API提取数据失败问题咨询

排查Python调用World Weather Online API中断问题

问题描述

我用Python调用World Weather Online API提取10年历史天气数据并保存为CSV,但程序在提取到2017年6月后就停止运行了。之前能成功提取数据,现在要排查是API端还是本地代码的问题。

相关截图信息

  • 代码片段截图:展示了循环遍历日期区间、构造API请求URL、处理响应并写入CSV的核心逻辑,包含requests.get()调用、日期格式化和文件写入操作。
  • 输出结果截图:CSV文件里只有2017年6月及之前的天气数据,之后没有新数据写入,程序没报错就直接终止了。

排查步骤

一、API端问题排查

  • 检查API调用限制:登录World Weather Online控制台,查看API的调用次数、请求频率限制是否触发。部分套餐可能对历史数据查询的时间范围有限制(比如仅允许查询近X年),确认2017年6月之后的数据是否在可查询范围内。
  • 手动测试API请求:构造2017年6月之后某一天的请求URL,直接在浏览器或Postman中发送请求,查看是否能正常返回数据。比如构造类似http://api.worldweatheronline.com/premium/v1/past-weather.ashx?key=YOUR_KEY&q=LOCATION&format=json&date=2017-07-01&enddate=2017-07-01的请求,观察响应是否正常、是否有错误信息。
  • 查看API状态公告:访问World Weather Online官方网站或开发者平台,查看是否有API服务中断、数据范围调整的公告,确认是否是平台侧的问题。

二、本地代码问题排查

  • 添加异常捕获与日志:在代码中增加异常捕获逻辑,捕获requests请求可能出现的超时、连接错误、HTTP错误(比如403/404/500),并打印详细错误信息。示例:
import requests
try:
    response = requests.get(api_url, timeout=10)
    response.raise_for_status()  # 触发HTTP错误异常
    # 处理响应数据
except requests.exceptions.RequestException as e:
    print(f"请求出错:{e},当前请求日期:{current_date}")
  • 检查日期循环逻辑:确认日期生成循环在2017年6月之后是否出现终止或跳变。比如检查datetime模块生成日期序列的代码,是否存在日期格式错误、循环条件错误导致提前退出。
  • 验证数据写入逻辑:检查CSV写入操作是否存在缓冲区未刷新、文件句柄意外关闭的情况。可以在每次写入后调用csv_writer.flush(),或者确保文件操作在with语句块中执行,避免资源泄漏。
  • 测试单日期请求:单独测试2017年6月之后的某一天数据提取,看代码是否能正常处理该日期的响应,是否存在数据解析错误导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:36:50