Я использую nirgs forked version of Tweepy, что мне нужно использовать для получения твитов между 2017-01-31
и 2017-02-01
. Мой код работает, и из-за ограничений скорости Twitters мне приходится переключаться между несколькими обработчиками auth, чтобы иметь возможность работать с твитами, даты которых находятся так далеко, как упоминалось ранее. Я использую this instruction, но после достижения Rate Limit и пытается перейти к следующему обработчику Идент с помощью api.auth_idx += 1
я получаю следующее сообщение об ошибке:Tweepy multi auth handler
File "build/bdist.macosx-10.11-intel/egg/tweepy/api.py", line 45, in auth_idx
IndexError: Index out of bounds
Основной код выглядит примерно так:
oauth_keys = [["consumer_key_1", "consumer_secret_1", "access_token_1", "access_token_secret_1"], ["consumer_key_2", "consumer_secret_2", "access_token_2", "access_token_secret_2"]]
auths = []
for consumer_key, consumer_secret, access_key, access_secret in oauth_keys:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
auths.append(auth)
api = tweepy.API(auths, monitor_rate_limit=True)
while True:
try:
for tweet in tweepy.Cursor(api.search, q='bitcoin', since=datetime.date(2017, 1, 31), lang='en').items(3000):
...
except tweepy.TweepError as e:
api.auth_idx += 1
continue
Я не знаю, что я делаю неправильно. Любая помощь очень ценится!
выглядит хорошо для меня, хотя вы можете просто хотите для инициализации объекта API с параметрами блокировки/ожидания, как показано ниже, а не для обработки самого переключения: 'api = tweepy.API (auths, retry_count = 3, retry_delay = 5, retry_errors = set ([401, 404, 500, 503]), monitor_rate_limit = True, wait_on_rate_limit = True) ' В любом случае это нормально. – nirg