繁体   English   中英

在 DO 服务器上的 django 生产中进行 api 请求调用时,我收到 429 状态,但从本地主机运行时没有发生此类错误

[英]i'm getting a 429 status when making api request call in django production on DO server but no such error occurs when running from local host

我写了这段代码,因为 TOMTOM 没有为其服务的 python SDK 当在 django 生产模式下调用它时,该函数被多次调用以进行路由计算,它在向 api 服务发出大约 10 到 15 个请求后抛出 429 的状态,但这没有即使 api 调用超过 20 到 50 次,当我在本地主机上以 debug False 运行它时也会发生。

def directions(request,geocodes):
    points = ''
    for p in geocodes:
        points += str(p['coordinates'][::-1]).replace('[','').replace(']','').replace(',','%2C').replace(' ','')
        points +='%3A'
    # try:
    req = f'https://api.tomtom.com/routing/1/calculateRoute/{points}/json?computeTravelTimeFor=all&routeType=fastest&avoid=unpavedRoads&travelMode=car&key={tomtom_api}'
    r =requests.get(f'https://api.tomtom.com/routing/1/calculateRoute/{points}/json?computeTravelTimeFor=all&routeType=fastest&avoid=unpavedRoads&travelMode=car&key={tomtom_api}')
    status = r.status_code
    print(r.status_code)
    if status == 200:
        results = r.json()
        return results
    elif status == 429:
        time.sleep(int(r.headers["Retry-After"]))
        r =requests.get(f'https://api.tomtom.com/routing/1/calculateRoute/{points}/json?computeTravelTimeFor=all&routeType=fastest&avoid=unpavedRoads&travelMode=car&key={tomtom_api}')
        results = r.json()
    return results

如果我能得到关于为什么会发生这种情况的帮助,我将不胜感激。谢谢

听起来您没有为这些 API 服务付费,这反过来意味着您每天只能进行 X 次调用。 明天您的呼叫限制将重置,您将能够再次开始从 API 发出请求。 根据 API 生成无限调用通常不会花费太多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM