2011-06-28 30 views
1

我有一個Django應用程序需要從幾個Twitter帳戶中提取follower_count信息。但是我遇到了一些請求限制的問題。該應用程序不是一個Twitter應用程序,所以它沒有帳戶,並且不使用OAuth,所以白名單不可能(如果我正確理解白名單)。所以,我有幾個問題:處理twitter中的請求限制REST API

1)有沒有什麼辦法來解決這個限制非Twitter的應用

2)是150極限硬1時間?這意味着如果您在上午8點達到極限,是否等到上午9點,無論平均時間發生了什麼請求,或者是在每次初始150後發出請求時重置小時計數?

3)我目前使用下面的代碼讓我的數據:

for page in pages: 
    url = 'api.twitter.com/1/users/show/' + page.twitter_name + '.json' 
    target = urllib2.urlopen(url) 
    request = simplejson.loads(target.read()) 

    # parse the request 

這是計數每頁的對象或一個請求是有什麼我可以在此代碼做,以減少請求數我每頁都在製作?

4)我是否正確理解白名單是因爲它是用於推特應用,還是應該考慮將我從中提取信息的各種Twitter帳戶列入白名單? (我確信這個信息存在,但是我所能找到的關於白名單的所有鏈接都被打破了)

編輯: 我現在發現,twitter不再提供新的白名單,因此忽略了這些問題的元素。

回答

1

我想說,對於追隨者數量這樣的事情,你不需要它是最新的權利到第二。由於每個負載已經產生了一堆請求(獲得多個用戶數據),所以最好是犧牲一點精度來減少請求的產生。將您在頁面對象中獲得的計數值存儲起來,也許還會附上最後一次請求的時間戳,然後使用模型中的數字,並且只重新評估自上次檢​​查以來是否超過一小時。追隨者的數量可能並沒有大幅改變。

更新:任何時候你使用第三方API時,你應該總是在開發中使用mocks,尤其是涉及到速率限制。只需獲取響應一次,保存它,然後將您的AJAX請求指向開發期間保存的複製。

+0

真。我只計劃每天運行腳本一次,所以我並不真正擔心在生產中遇到這個問題。我更多的是試圖找出解決方案來構建和測試應用程序。當我在一個小時內只能測試腳本3次時,它變得非常令人沮喪。 –

+0

請參閱上面的更新。 –

1

這裏是用來發現的「剩餘點擊」你已經離開量的好方法: http://api.twitter.com/1/account/rate_limit_status.json

它返回這樣的事情,讓你知道當你允許做另一個請求:

{ 
    "remaining_hits": 150, 
    "reset_time_in_seconds": 1277234708, 
    "hourly_limit": 150, 
    "reset_time": "Tue Jun 22 19:25:08 +0000 2010" 
} 


POW