试图绕过"速率限制"和其他Twitter API错误

时间:2014-10-05 21:51:32

标签: python-2.7 twitter tweepy ratelimit

我的代码试图在2014-10-01收集有关“汽车”的推文。为了处理速率限制或任何其他与Twitter相关的错误(即超过容量),我在最后实现代码,告诉程序停止并在发生TweepError时等待20分钟。

不幸的是,它不起作用,因为脚本崩溃,我仍然可以看到速率限制错误消息。请指教,谢谢。

import tweepy
import time
import csv

ckey = "xxx"
csecret = "xxx"
atoken = "xxx-xxx"
asecret = "xxx"

OAUTH_KEYS = {'consumer_key':ckey, 'consumer_secret':csecret,
    'access_token_key':atoken, 'access_token_secret':asecret}
auth = tweepy.OAuthHandler(OAUTH_KEYS['consumer_key'], OAUTH_KEYS['consumer_secret'])
api = tweepy.API(auth)

startSince = '2014-10-01'
endUntil = '2014-10-02'

searchTerms = 'cars'

for tweet in tweepy.Cursor(api.search, q=searchTerms, 
    since=startSince, until=endUntil).items(999999999):

    try:
        print "Name:", tweet.author.name.encode('utf8')
        print "Screen-name:", tweet.author.screen_name.encode('utf8')
        print "Tweet created:", tweet.created_at

    except tweepy.error.TweepError:
        time.sleep(60*20)
        continue

    except tweepy.TweepError:
        time.sleep(60*20)
        continue

    except TweepError:
        time.sleep(60*20)
        continue

    except IOError:
        time.sleep(60*5)
        continue

    except StopIteration:
        break

1 个答案:

答案 0 :(得分:0)

您的问题是您的try-except声明与您对Twitter API的调用无关。 tweepy.Cursor是触发速率限制错误的原因。尝试包括这一行:

for tweet in tweepy.Cursor(api.search, q=searchTerms, 
    since=startSince, until=endUntil).items(999999999):

try内,看看TweepError是否被捕获(应该是)。您可能需要进行一些小修改才能使光标从正确的位置继续,但它应该是微不足道的。