推特標(biāo)準(zhǔn)接口API的請(qǐng)求頻率限制說明(2)

來源:簡(jiǎn)書
作者:Dedededi
時(shí)間:2020-08-05
4419
本系列是對(duì)推特開發(fā)者文檔進(jìn)行的翻譯,以便幫助開發(fā)人員使用API接口。

Rate limiting

注:只針對(duì)標(biāo)準(zhǔn)API端口,高級(jí)API不在討論范圍內(nèi)。

每個(gè)用戶或每個(gè)應(yīng)用程序

標(biāo)準(zhǔn)API的速率限制主要基于每個(gè)用戶,或者更準(zhǔn)確地說,基于每個(gè)用戶的訪問令牌。如果一個(gè)方法允許每個(gè)端口接收15個(gè)請(qǐng)求,那么它允許每個(gè)訪問令牌訪問該窗口15個(gè)請(qǐng)求。(大白話就是限制15個(gè)請(qǐng)求就只能允許你訪問15次)

使用僅應(yīng)用程序身份驗(yàn)證時(shí),將全局確定整個(gè)應(yīng)用程序的速率限制。如果一個(gè)方法允許每個(gè)端口接收15個(gè)請(qǐng)求,那么它允許您代表應(yīng)用程序?yàn)槊總€(gè)窗口發(fā)出15個(gè)請(qǐng)求。此限制與每個(gè)用戶的限制完全分開考慮。

15分鐘間隔

速率限制分為15分鐘間隔。所有端口在請(qǐng)求時(shí)都需要身份驗(yàn)證。

有兩種initial buckets可用于GET請(qǐng)求:每15分鐘15個(gè)請(qǐng)求,每15分鐘180個(gè)請(qǐng)求。

HTTP頭部和響應(yīng)代碼

使用HTTP頭可以了解在給定的速率限制下,應(yīng)用程序在剛剛使用的方法上的狀態(tài)。

21615413-03b4188bbc9ec2e8.webp.jpg

Http Headers

上圖是HTTP Headers and Response Codes部分,可以看到有三個(gè)參數(shù)可以查看當(dāng)前請(qǐng)求過程所在的“一輪請(qǐng)求計(jì)數(shù)”總共的次數(shù)、剩余的次數(shù)、下次重新計(jì)數(shù)的時(shí)間戳。

注意,HTTP頭是上下文的。當(dāng)使用app-only auth的身份驗(yàn)證時(shí),它們指示應(yīng)用程序上下文的速率限制。使用user-based auth的身份驗(yàn)證時(shí),它們指示該用戶應(yīng)用程序上下文的速率限制。

當(dāng)應(yīng)用程序超過給定標(biāo)準(zhǔn)API終結(jié)點(diǎn)的速率限制時(shí),API將返回一個(gè)HTTP 429“太多請(qǐng)求”響應(yīng)代碼,并在響應(yīng)正文中返回以下錯(cuò)誤:

21615413-744f11c2635f45aa.webp.jpg

返回錯(cuò)誤

為了更好地知道可用的速率限制,請(qǐng)考慮定期使用GET application/rate_limit_status方法(這兩個(gè)方法后面會(huì)介紹)。

「Janebook」的原創(chuàng)文章更好的解釋了這幾個(gè)參數(shù)的使用,在此處貼出部分內(nèi)容:

以“GET followers/ids”接口為例,文檔顯示15分鐘為一個(gè)計(jì)數(shù)循環(huán),15分鐘內(nèi)單個(gè)用戶(不同用戶請(qǐng)求沒有測(cè)試)使用“user auth”最多請(qǐng)求15次該接口。計(jì)數(shù)從每一輪循環(huán)的第一次發(fā)出請(qǐng)求開始計(jì)算本輪循環(huán)的15分鐘,對(duì)應(yīng)x-rate-limint-reset參數(shù),即為本輪首次發(fā)出請(qǐng)求時(shí)的時(shí)間戳+1560對(duì)應(yīng)的數(shù)字。x-rate-limit-limit對(duì)于此接口來說為15(不變的固定值),一輪循環(huán)中加入已經(jīng)請(qǐng)求了N次,則對(duì)應(yīng)的x-rate-limit-remaining為15-N次。*

GET and POST請(qǐng)求限制

從系統(tǒng)中讀取的速率限制(GET)是根據(jù)每個(gè)用戶和每個(gè)應(yīng)用程序定義的,而寫入系統(tǒng)(POST)的速率限制僅在用戶帳戶級(jí)別定義。換句話說,對(duì)于讀取速率限制,請(qǐng)考慮以下情況:

21615413-23a2ba1c960f78f9.webp.jpg

這部分看不懂也沒問題,大概意思是:

對(duì)于user auth來說,如果一個(gè)用戶X,授權(quán)了APPa及APPb,分別生成了TokenA、TokenB,如果使用TokenA請(qǐng)求了某個(gè)端口(例如GET friends/list)n次,那么在本輪循環(huán)計(jì)數(shù)結(jié)束前使用TokenA與TokenB請(qǐng)求該端口的剩余次數(shù)之和為“15-n”。

避免速率受限的技巧

緩存

如果您希望大量使用API,請(qǐng)將響應(yīng)存儲(chǔ)在您的應(yīng)用程序或網(wǎng)站中。例如,請(qǐng)勿嘗試在網(wǎng)站登錄頁(yè)面的每個(gè)頁(yè)面加載上調(diào)用Twitter API。而是不經(jīng)常調(diào)用API,并將響應(yīng)加載到本地緩存中。當(dāng)用戶訪問您的網(wǎng)站時(shí),加載結(jié)果的緩存版本。

優(yōu)先考慮活動(dòng)用戶

如果您的站點(diǎn)跟蹤許多Twitter用戶(例如,獲取其當(dāng)前狀態(tài)或有關(guān)Twitter使用情況的統(tǒng)計(jì)信息),請(qǐng)考慮僅請(qǐng)求最近登錄您站點(diǎn)的用戶的數(shù)據(jù)。

反正最好的突破頻率限制的方法還是充錢=。=

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
版權(quán)說明:本文內(nèi)容來自于簡(jiǎn)書,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家