我如何知道 RiotWatcher 何时遇到 429 错误?
How do I know when RiotWatcher encounters a 429 error?
我使用 RiotWatcher 通过 python 访问骚乱 API。由于我使用开发密钥进行了很多查询,因此我尝试注意 429 错误,指示超出允许的查询速率。
在做一些测试时,RiotWatcher 似乎包含一个自动 RetryAfter,这与 documentation 一致。如果超过限制,它会暂停并在查询可用时立即重新启动。
我尝试了文档中给出的以下示例,但它并没有像我想象的那样工作。
try:
response = watcher.summoner.by_name(region, 'Poco')
except ApiError as err:
if err.response.status_code == 429:
print('We should retry in {} seconds.'.format(err.headers['Retry-After']))
print('this retry-after is handled by default by the RiotWatcher library')
print('future requests wait until the retry-after time passes')
elif err.response.status_code == 404:
print('Summoner with that ridiculous name not found.')
else:
raise
在错误 429 上,请求暂停并在时间结束后继续,但我从未收到错误消息。
您知道是否可以知道 watcher 何时因 429 错误而暂停吗?
谢谢!
根据文档 https://riot-watcher.readthedocs.io/en/latest/riotwatcher/Riot/index.html 创建观察程序实例时,您可以指定要使用的速率限制器。它默认为 Handlers.RateLimit.BasicRateLimiter
,所以你应该将它设置为你自己的子类,或者它也可以与 None 一起使用。默认速率限制器将拦截 429 错误并在您看不到错误的情况下进行重试。
探索 Riot Watcher 包代码,特别是 BasicRateLimiter.py 文件,我发现以下代码,第 49 行:
LOG.debug(
"waiting for %s seconds due to %s limit...",
to_wait.total_seconds(),
wait_until[1],
)
因此,要获取有关暂停以限制请求以及剩余时间的信息,只需查看日志中的 DEBUG 消息即可。
我使用 RiotWatcher 通过 python 访问骚乱 API。由于我使用开发密钥进行了很多查询,因此我尝试注意 429 错误,指示超出允许的查询速率。
在做一些测试时,RiotWatcher 似乎包含一个自动 RetryAfter,这与 documentation 一致。如果超过限制,它会暂停并在查询可用时立即重新启动。
我尝试了文档中给出的以下示例,但它并没有像我想象的那样工作。
try:
response = watcher.summoner.by_name(region, 'Poco')
except ApiError as err:
if err.response.status_code == 429:
print('We should retry in {} seconds.'.format(err.headers['Retry-After']))
print('this retry-after is handled by default by the RiotWatcher library')
print('future requests wait until the retry-after time passes')
elif err.response.status_code == 404:
print('Summoner with that ridiculous name not found.')
else:
raise
在错误 429 上,请求暂停并在时间结束后继续,但我从未收到错误消息。
您知道是否可以知道 watcher 何时因 429 错误而暂停吗? 谢谢!
根据文档 https://riot-watcher.readthedocs.io/en/latest/riotwatcher/Riot/index.html 创建观察程序实例时,您可以指定要使用的速率限制器。它默认为 Handlers.RateLimit.BasicRateLimiter
,所以你应该将它设置为你自己的子类,或者它也可以与 None 一起使用。默认速率限制器将拦截 429 错误并在您看不到错误的情况下进行重试。
探索 Riot Watcher 包代码,特别是 BasicRateLimiter.py 文件,我发现以下代码,第 49 行:
LOG.debug(
"waiting for %s seconds due to %s limit...",
to_wait.total_seconds(),
wait_until[1],
)
因此,要获取有关暂停以限制请求以及剩余时间的信息,只需查看日志中的 DEBUG 消息即可。