2013-10-07 19 views
0

我需要做大量的HTTP請求(> 1000)對公共服務,只允許每天500個HTTP請求。因此,我都數不過來執行的請求數和停止,當我達到每日最高金額第二天繼續用剩下的電話。特別是,我迭代了一個沒有排序的列表,所以我不能假定這些元素是以任何順序排列的。我的代碼如下所示:的Python:常規的處理API請求限制

from requests import Session, Request 

request_parameters = {'api_key': api_key} 

for user_id in all_user_ids: 
    r = requests.get('http://public-api.com/%s'% user_id, request_parameters) 
    text = r.content 
    # do some stuff with text 

是否有任何包或模式可以推薦用於計數和恢復API調用?

+0

的問題是,即使我認爲我自己,我遍歷元素可能無法在相同的順序前,這使得它可以繼續第二天困難 – Andy

+0

我問,因爲我沒有看到一個有效的方式來記錄已執行的呼叫,以便我知道第二天要繼續的位置 – Andy

回答

0

我建議實施一個簡單的計數器停止時,你打你的限制,以您已經接收到的數據的本地緩存相處的日子。然後,當你運行過程中再次第二天第一覈對您的本地緩存的每條記錄,只去調用Web服務如果在本地緩存中沒有記錄。這樣,您最終將獲得所有數據,除非您每天生成的請求數超過服務使用限制。

緩存的格式將取決於從Web服務返回的內容以及您需要的數據量,但它可能與具有唯一標識符的csv文件一樣簡單,以便進行搜索,而其他字段可能將來需要檢索。

另一種選擇是存儲從每個呼叫的響應整個(如果你需要很多的話)在字典中的鍵是一個唯一的標識符和值是響應。這可以保存爲一個JSON文件,並輕鬆地加載回內存中,以便對未來的運行進行檢查。