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

Python中用while循环结合next page token调用API及无限循环排查

问题分析与解决方案

你的代码陷入无限循环,同时还存在数据漏存的问题,核心原因和修复方案如下:

核心问题

  1. 最后一页数据漏存:当前逻辑仅在API返回next_page_token时保存数据,没有该字段的最后一页结果完全没被存储。
  2. 违反Google API分页规则:Google Places API要求分页请求之间必须等待至少2秒,直接连续请求会导致服务器重复返回相同的next_page_token,触发无限循环。
  3. 变量名冲突:type是Python内置关键字,用作变量名可能引发潜在问题。

修正后的代码

import time
import pandas as pd

if __name__ == '__main__':
    # 获取所有业务类型
    df = pd.read_csv('business_type.csv')

    # 遍历每个业务类型
    for biz_type in df['business_type']:
        token = ''
        while True:
            # 调用Google API
            response = make_google_api_call(biz_type, token)
            
            # 优先保存当前页数据(包含最后一页)
            save_data(response)
            
            # 检查是否存在下一页token
            if "next_page_token" in response:
                token = response['next_page_token']
                # 强制等待2秒,遵守API分页限制
                time.sleep(2)
            else:
                # 无下一页,终止循环
                break

额外注意事项

  • 如果仍出现循环,检查make_google_api_call是否正确将API返回的JSON字符串解析为Python字典,同时要处理API可能返回的错误(如请求超限、网络异常),这类错误也可能导致循环无法终止。
  • 可以在循环中添加计数器,比如超过N次请求就强制终止,避免极端情况下的无限循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:20:27