【问题标题】:How to handle Google Ads API rate limit when calling REST API?调用 REST API 时如何处理 Google Ads API 速率限制?
【发布时间】:2021-09-18 09:29:07
【问题描述】:

我正在使用 Google Ads REST API 来提取广告数据。我没有使用客户端库。

一个问题,您如何在调用请求时以编程方式检查当前 API 使用情况,以便在继续之前停止并等待? Facebook Marketing API 等其他 API 在结果中有一个标头,告诉您还剩下多少请求,所以我可以停下来等待。 Google Ads REST API 上是否有类似的信息?

感谢您阅读本文。

【问题讨论】:

    标签: google-ads-api


    【解决方案1】:

    到目前为止,我在the documentation 中没有看到任何迹象表明存在:(

    (如果您的速度太快/API 过载,则另外还有一个 RateExceeded 错误,其中包括一个 retryAfterSeconds 字段。)

    【讨论】:

    • 感谢您的信息。我已经发现了。但是,我想完全避免达到速率限制:D
    【解决方案2】:

    最终,我尝试了这种方法。到目前为止,我还没有达到极限:

    截至本答案(链接:https://developers.google.com/google-ads/api/docs/access-levels),Google Ads API 的基本开发人员令牌每天允许 15,000 个请求。所以每小时有 15,000 / 24 = 625 个请求。 进一步划分表明,我每分钟可以有 625/60 = 10.4 个请求。所以每 6 秒 1 个请求将确保我不会达到速率限制。

    所以我的解决方案是:

    1. 测量完成请求调用和后续处理所需的时间
    2. 如果总时间超过 6 秒,则执行下一个请求。否则,等待总时间为 6 秒,然后执行下一个请求。

    下面的代码是我用来执行此操作的。希望对大家有帮助。

    import time
    from math import ceil
    waiting_seconds = 6
    
    
    start_time = time.time()
    
    ###############PERFORM API REQUEST HERE
    
    
    #Measure how long it takes, should be at least 6 secs to be under API limit
    end_time = time.time()
    elapsed = end_time - start_time
                
                
    if elapsed < waiting_seconds:
        remaining = ceil(waiting_seconds - elapsed)
        time.sleep(remaining)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 2021-06-05
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多