2011-06-28 28 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