2012-01-10 94 views
24

我已經看到某些(例如在quora)上提到的600個呼叫/ 600秒速率限制。Facebook圖形API速率限制和批量請求

我想知道的是我是否被允許在600秒內完成600 batch個請求(一個批量請求最多包含50個請求)。

+0

「我們目前限制批請求數50 「。 - [Facebook](https://developers.facebook.com/docs/reference/api/batch/)。 50什麼?每分鐘,每天,用戶請求!? – Xeoncross 2012-07-10 17:12:29

+0

我想知道同樣的事情。 50個併發請求,請求每分鐘,每天,每次換尿布? – 2012-08-15 15:44:40

+2

嗯..我想嘲笑FB,但是閱讀他們的文檔澄清了一些事情:「我們目前將可批量處理的請求數量限制爲50個,但批處理中的每個調用都會單獨計算以用於計算API調用限制和資源限制,例如,一批10個API調用將計爲10個調用,批處理中的每個調用都以相同的方式對CPU資源限制做出貢獻。「 – 2012-12-19 03:30:56

回答

11

您應該通過檢查以下錯誤消息以編程方式處理速率限制。如果遇到錯誤,則應在下次調用之前放入時間等待循環。我的一個高流量應用程序帳戶監視這個錯誤,並且會放慢速度。

來源:https://developers.facebook.com/docs/bestpractices/

速率限制(API_EC_TOO_MANY_CALLS)如果您的應用程序發出了太多的呼叫,API服務器會自動打分限制你, 返回一個 「API_EC_TOO_MANY_CALLS」 的錯誤。一般來說,這不應該發生 。如果是這樣,那是因爲你的應用程序已經確定 正在進行太多的API調用。迭代您的代碼,以便儘可能少地撥打 以保持所需的用戶體驗 。您還應該避免複雜的FQL查詢。要了解 如果您的應用程序被限制,請轉到「見解」並點擊 「限制」。

編輯

正如評論跟帖報告IGY,在那批數爲1的每個請求您的600例子是最大極限,這意味着你可以火了15名批次的請求每個包含50個呼叫。

+8

感謝您指出最佳做法。然而,我的問題是,如果批量請求和單個請求都算作1次請求而不是限制。 – daremon 2012-01-11 09:10:04

+0

如果Facebook的文檔沒有說明正在執行哪些操作,那麼爲了不讓您的開發人員帳戶被標記/撤銷並監控從API返回的錯誤,您應該謹慎小心。最好的做法是監控這些錯誤並按照他們的說法行事。 – DMCS 2012-01-11 16:16:06

+0

鏈接不再工作?我需要實施速率限制,我會回覆什麼樣的迴應? – 2012-04-27 11:57:20

6

從我的經驗來看,無論他們的方式如何(分批或不分批),他們都會計算個人請求。例如,如果我試圖做1個批/秒,每個包含10個請求,我很快就會得到'太多的電話'。

如果我正在做1批/ 10秒,每個批次包含10個請求,我從來沒有看到過多的電話。

我個人沒有看到任何理由更喜歡批量定期API調用。

2

批次調用必須按批次中的每個項目進行計數。一個包含50個項目的批次調用相當於使用該圖表的50個api調用。

5

根據FB文檔,批處理中的每個元素都被視爲一個單獨的調用。

我們目前限制其可以是一個批次 至50的請求的數量,但該批次內的每個呼叫被用於計算API調用限制和資源限制的 目的分開計數的。例如,對於 示例,一批10個API調用將計爲10個調用,並且批處理中的每個調用 都會以相同的 方式貢獻CPU資源限制。

引自:https://developers.facebook.com/docs/reference/api/batch/

我沒有經驗證據不過。

大衛

3

我有相當與Facebook的API一個天大的痛苦,現在的經驗,我可以說:

  • 如果一批請求包含50個請求,那麼它算作Facebook上50個請求
  • 1 request!= 1 call。 Facebook有自己的呼叫定義。如果你的請求很大,返回大量數據或者消耗大量的CPU,那麼它將被視爲多次調用。

我正在做的最頻繁的圖形API調用包含了很多嵌套的字段,我注意到在做了200次之後我達到了「600次/ 600秒」。所以基本上這個調用計數在我的情況下,3 ...

你有很多其他的速率限制但沒有人得到妥善記載...