3

我們的Google表格附加組件爲用戶提供了一個擴展函數庫。正確的方法來處理UrlFetch速率限制,而沒有隨機Utilities.sleep?

問題是,每個函數都運行一個UrlFetch。因此,如果用戶將列拖動大於100次,他們可能會看到錯誤:「錯誤:服務在短時間內被調用的次數太多:urlfetch」。

顯然一個常見的解決方案是在UrlFetch函數之前添加一個隨機睡眠位(例如https://productforums.google.com/forum/#!topic/docs/_lgg9hbU6k8)。但是沒有其他辦法可以解決這個問題嗎?經過隨機睡眠測試後,我可以一次將限制增加到200個功能,

潛在的問題是我不知道實際的限制是什麼。例如,是否在Google的隊列中同時存在100次UrlFetch請求,速率限制點擊?我試圖真正理解我們的選擇是什麼,但是甚至沒有完全獲得限制!

非常感謝您的幫助,特別是如果您是Google的某個人:)。

+0

你檢查的最佳實踐?你正在提取的網址,對每一行都是一樣的嗎? https://developers.google.com/apps-script/best_practices – Gerardo

+0

嗨@Gerardo。我讀過那些。不幸的是,它改變了每一行,所以我無法緩存。 – bumpkin

+0

你在使用onEdit執行每個原始數據嗎?或一些事件?還是由用戶觸發? – Gerardo

回答

2

您的問題的答案是「當Google的隊列中存在100次UrlFetch請求時,速率限制點擊嗎?」基本上沒有。限制不是100個電話。

你會看到錯誤(「錯誤:服務在短時間內調用次數過多:網址抓取」),如果這些條件1被滿足:數據的

  • 22 MB發送或通過網址抓取收到每分鐘
  • 每分鐘撥打3000或更多電話
  • ...或者如果您每天最多撥打一個電話,費率通話和數據..

對你來說,這聽起來像你打的每日數據最大值或每日呼叫最大前得到錯誤信息,所以它可能是每分鐘狀態數據:22 MB發送或接收通過每分鐘的urlfetch。

可能不斷檢查你正在通過urlfetch處理的字節數,並使用它,讓功能休眠一分鐘,如果它接近極限。但是,這有點煩人。

您可能需要考慮嘗試使功能更有效,從而減少數據發送或調用次數。 如何做到這一點取決於功能,我們需要看到代碼在那裏提出具體的建議。

你可以在這裏找到谷歌的配額:https://cloud.google.com/appengine/docs/quotas#UrlFetch

+0

這真的很有幫助。謝謝。我們的函數運行任意代碼很難使通常更高效。但至少我們可以爲我們的用戶記錄這一點。 – bumpkin