gpt4 book ai didi

python - 如果程序返回溢出错误,如何让程序等待?

转载 作者:太空宇宙 更新时间:2023-11-03 20:37:20 24 4
gpt4 key购买 nike

因此,我尝试从最大调用限制为 60/分钟的 API 获取数据。如果我检查这个,它将返回响应[429]请求太多。

我认为也许更好的方法是继续请求 API,直到收到响应[200],但我不确定如何执行此操作。

import requests

r = requests.get("https://api.steampowered.com/IDOTA2Match_570/GetTopLiveGame/v1/?key=" + key + "&partner=0")

livematches = json.loads(r.text)['game_list']

所以通常它会运行,但如果它返回响应 [200] 以外的任何内容,我的程序将会失败,并且使用该网站的任何人都不会看到任何内容。

最佳答案

一般来说,对于这样的情况,我建议在这里添加一层缓存间接。您绝对不想(也不能)尝试像您建议的那样使用前端解决这个问题,因为这不是您的应用程序前端的用途。当然,您可以添加“等待”功能,但人们所要做的就是打开 Chrome 开发人员工具来获取您的 API key ,然后根据需要多次调用它。可以这样想:假设您有一位厨师每小时只能做 10 道菜。有人可以轻松地进入餐厅,点 10 样东西,然后其他人就无法在接下来的一个小时内点任何东西,这是不公平的。相反,添加一个“缓存”层,这意味着您只每隔几秒调用一次 steam API。如果 5 个人在 5 秒内请求您的网站,您只需在第一次调用时访问 Steam API,然后保存该响应。对于其他 4 个(以及接下来几秒钟内到达的任何人),您将返回一个“缓存”版本。

添加缓存 API 层的两个主要原因如下:

  1. 您将停止暴露 key从前端。你永远不想像这样直接将你的 API key 暴露给前端,因为任何人都可以拿走你的 key 并运行许多请求,然后“砰”的一声,你的网站现在瘫痪了(拒绝服务攻击是微不足道的)。相反,您可以让用户点击您的自定义 mysite.io/getLatestData端点不需要 key ,因为它会安全地存储在您的后端。

  2. 您不会遇到速率限制问题。本质上,如果您的缓存每分钟只访问一次 API,您就不会遇到用户因 API 限制而无法访问您的网站的情况,因为它会将缓存结果返回给用户。

这可能有点难以想象,所以它的工作原理如下:

您用您最喜欢的服务器端语言编写了一些 API。就拿 NodeJS 来说吧。有很多资源可用于学习 ExpressJS 的基础知识。您可以编写一个端点,如 /getTopGame附加到像 redis 这样的缓存。如果 redis 缓存中有缓存条目,则将其返回给用户。如果没有,请访问steam API并获取最新数据。存储它的期限为 5 秒。繁荣,你完成了!

一开始似乎有点令人畏惧,但正如您所说,作为一名大学生,这是了解后端开发工作原理的好方法。

关于python - 如果程序返回溢出错误,如何让程序等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com