我們並行運行多個短查詢,並達到10秒的限制。如何避免碰到每位用戶10秒的限制
根據文檔,如果我們達到每個項目每個用戶10個API請求的限制,則可能會發生調節。 我們發送一個「開始查詢作業」,然後我們調用帶有60,000 timeoutMs的「getGueryResutls()」,然而,我們在〜1秒後得到一個響應,我們在JSON響應中查找JOB Complete,並且因爲它是不在那裏,我們需要再次發送GetQueryResults()多次並達到閾值,這是造成錯誤,而不是減速。示例代碼如下。
我們的問題是這樣的: 1.什麼是「用戶」,它是一個appengine用戶,它是一個用戶ID,我們可以放入連接字符串或查詢itslef? 2.它真的是每個BigQuery的API項目嗎?
3.什麼是行爲?我們得到一個錯誤:「超出了速率限制:這個user_method的用戶/方法api請求限制過多」,而不是文檔說的和所有我們的進程失敗的限制行爲。 4.如下代碼所示,爲什麼我們在1秒後得到響應&不是根據我們的超時?我們做錯了什麼?
非常感謝
這裏是一個示例代碼:
while (res is None or 'jobComplete' not in res or not res['jobComplete']) :
try:
res = self.service.jobs().getQueryResults(projectId=self.project_id,
jobId=jobId, timeoutMs=60000, maxResults=maxResults).execute()
except HTTPException:
if independent:
raise
thanks.if它的工作原理是一樣,那也不錯。 但是,是的,我們得到的響應沒有完成任務非常快,需要重新查詢。 此外,如果這是限制,我們如何得到錯誤超出率限制:這個user_method的用戶/方法api請求限制太多? 如果你可以複製,會很好。 – user1516770
我已經添加了更詳細的測試,請參閱我的下一條評論 – Shay
您能否驗證您的工作沒有出現錯誤?當你等待時你能打印出整個結果嗎?當出現錯誤時,您不會完成作業,您將只返回一個不同的http響應代碼和一個「錯誤」對象作爲結果)。 –