【发布时间】:2016-03-10 08:44:06
【问题描述】:
我正在创建一个游戏比较网站,并希望在其中包含亚马逊的价格。我面临的问题是使用他们的 API 来获取我已经拥有的 25,000 种产品的价格。
我目前正在使用来自 Amazons API 的 ItemLookup 并使其能够检索价格,但是在大约 10 个结果之后,我收到一条错误消息,提示“您提交请求的速度太快了。请以较慢的速度重试您的请求。
降低请求率的最佳方法是什么?
谢谢,
【问题讨论】:
我正在创建一个游戏比较网站,并希望在其中包含亚马逊的价格。我面临的问题是使用他们的 API 来获取我已经拥有的 25,000 种产品的价格。
我目前正在使用来自 Amazons API 的 ItemLookup 并使其能够检索价格,但是在大约 10 个结果之后,我收到一条错误消息,提示“您提交请求的速度太快了。请以较慢的速度重试您的请求。
降低请求率的最佳方法是什么?
谢谢,
【问题讨论】:
如果您的应用程序尝试提交超出您帐户最大请求限制的请求,您可能会收到来自 Product Advertising API 的错误消息。每个帐户的请求限制是根据收入绩效计算的。用于访问产品广告 API 的每个帐户的初始使用限制为每秒 1 个请求。在过去的 30 天内(约每分钟 0.11 美元),对于每 4,600 美元的已发货商品收入,每个帐户每秒将额外收到 1 个请求(最多 10 个)。
如果您只打算运行一次,那么只需在请求之间休眠一秒钟即可。
如果这是您计划更频繁地运行的东西,则可能值得通过确保查询返回所需的时间长度不再休眠(因此,如果我的 API 查询需要200ms才能回来,我们只睡800ms)
【讨论】:
因为它只说在 10 个结果之后您应该检查您可以获得多少个结果。如果它总是在 10 次快速请求后出现,您可以使用
wait(500)
或更多毫秒。如果仅在 10 次之后,您可以构建一个循环并每 9 个请求执行一次。
【讨论】:
当你的请求大量重复时。 然后你可以创建一个缓存,每天清除上下文。 或联系 aws 购买授权
【讨论】:
即使我延迟了 1 秒或更多秒,我也遇到了同样的问题。
我相信,当您在延迟一秒的情况下开始发出过多请求时,亚马逊不喜欢这样,并认为您是垃圾邮件发送者。
您必须生成另一个密钥对(并在发出进一步请求时使用它)并延迟 1.1 秒才能再次发出快速请求。
这对我有用。
【讨论】: