处理twitter REST API中的请求限制

时间:2011-06-28 17:51:35

标签: django twitter

我有一个Django应用程序需要从几个Twitter帐户中提取follower_count信息。但是我遇到了请求限制的一些问题。该应用程序不是一个Twitter应用程序,因此它没有帐户,也没有用户OAuth,因此不可能使用白名单(如果我正确理解白名单)。所以我有几个问题:

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帐户列入白名单? (我确信这些信息存在,但我找到的关于白名单的所有链接都被破坏了)

编辑: 我现在发现twitter不再提供新的白名单,所以忽略了问题的这些要素。

2 个答案:

答案 0 :(得分:1)

我会说,对于像追随者计数这样的东西,你不需要它是正确的第二个最新的。由于每个负载已经生成了一堆请求(获取多个用户数据),因此最好不要为了减少请求生成而牺牲一点精度。存储您在页面对象中获得的计数,可能还包括上次发出请求的时间戳,然后使用模型中的数字,并仅重新评估自上次检​​查后是否超过一小时。无论如何,追随者数量可能没有大幅改变。

更新:每当您使用第三方API时,您应始终在开发中使用模拟,尤其是涉及速率限制时。只需获取响应一次,保存它,然后将您的AJAX请求指向开发期间保存的复制。

答案 1 :(得分: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