推特开发者账号【推特开发者文档系列4】——推特标准接口API的请求频率限制说明(2)

本系列是对推特开发者文档进行的翻译,以便帮助开发人员使用API接口,难免有些地方存在不足,还请谅解。

关于推特开发者账号 elevated academic 请看此贴:

推特开发者账号申请权限

搜索微信公众号 twitterDeveloper 获得帮助


Rate limiting

注:只针对标准API端口,高级API不在讨论范围内。

每个用户或每个应用程序

标准API的速率限制主要基于每个用户,或者更准确地说,基于每个用户的访问令牌。如果一个方法允许每个端口接收15个请求,那么它允许每个访问令牌访问该窗口15个请求。(大白话就是限制15个请求就只能允许你访问15次)

使用仅应用程序身份验证时,将全局确定整个应用程序的速率限制。如果一个方法允许每个端口接收15个请求,那么它允许您代表应用程序为每个窗口发出15个请求。此限制与每个用户的限制完全分开考虑。

15分钟间隔

速率限制分为15分钟间隔。 所有端口在请求时都需要身份验证。

有两种initial buckets可用于GET请求:每15分钟15个请求,每15分钟180个请求。

HTTP头部和响应代码

使用HTTP头可以了解在给定的速率限制下,应用程序在刚刚使用的方法上的状态。
Http Headers
上图是HTTP Headers and Response Codes部分,可以看到有三个参数可以查看当前请求过程所在的“一轮请求计数”总共的次数、剩余的次数、下次重新计数的时间戳。

注意,HTTP头是上下文的。当使用app-only auth的身份验证时,它们指示应用程序上下文的速率限制。使用user-based auth的身份验证时,它们指示该用户应用程序上下文的速率限制。

当应用程序超过给定标准API终结点的速率限制时,API将返回一个HTTP 429“太多请求”响应代码,并在响应正文中返回以下错误:
返回错误
为了更好地知道可用的速率限制,请考虑定期使用GET application/rate_limit_status方法(这两个方法后面会介绍)。

「Janebook」的原创文章更好的解释了这几个参数的使用,在此处贴出部分内容:

以“GET followers/ids”接口为例,文档显示15分钟为一个计数循环,15分钟内单个用户(不同用户请求没有测试)使用“user auth”最多请求15次该接口。计数从每一轮循环的第一次发出请求开始计算本轮循环的15分钟,对应x-rate-limint-reset参数,即为本轮首次发出请求时的时间戳+15*60对应的数字。x-rate-limit-limit对于此接口来说为15(不变的固定值),一轮循环中加入已经请求了N次,则对应的x-rate-limit-remaining为15-N次。

原文链接https://blog.csdn.net/qq_27378621/article/details/90382131

GET and POST 请求限制

从系统中读取的速率限制(GET)是根据每个用户和每个应用程序定义的,而写入系统(POST)的速率限制仅在用户帐户级别定义。换句话说,对于读取速率限制,请考虑以下情况:
在这里插入图片描述
这部分看不懂也没问题,大概意思是:

对于user auth来说,如果一个用户X,授权了APPa及APPb,分别生成了TokenA、TokenB,如果使用TokenA请求了某个端口(例如GET friends/list)n次,那么在本轮循环计数结束前使用TokenA与TokenB请求该端口的剩余次数之和为“15-n”。

避免速率受限的技巧

缓存

如果您希望大量使用API​​,请将响应存储在您的应用程序或网站中。例如,请勿尝试在网站登录页面的每个页面加载上调用Twitter API。而是不经常调用API,并将响应加载到本地缓存中。当用户访问您的网站时,加载结果的缓存版本。

优先考虑活动用户

如果您的站点跟踪许多Twitter用户(例如,获取其当前状态或有关Twitter使用情况的统计信息),请考虑仅请求最近登录您站点的用户的数据。

反正最好的突破频率限制的方法还是充钱=。=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值