Получение всех твитов из хэштега. Проблема восстановления после ограничения скорости с твипи - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь отсканировать все твиты хэштега #nationaldoughnutday, но не могу сделать это из-за ограничения скорости.

со ссылкой на код ниже, я пытался поместить код в цикл while, чтобы приСброс ограничения скорости, я могу возобновить удаление с последней даты сканирования (до_даты)

Однако я постоянно получал эту ошибку, и мой сканер, похоже, не возобновляет сканирование после долгого сна.

TweepError Failed to send request: ('Connection aborted.', error (10054, 'An existing connection was forcibly closed by the remote host'))
Sleeping...
TweepError Failed to send request: ('Connection aborted.', error (10054, 'An existing connection was forcibly closed by the remote host'))
Sleeping...
TweepError Failed to send request: ('Connection aborted.', error (10054, 'An existing connection was forcibly closed by the remote host'))

Я пытался удалить внутренний цикл try catch, но тоже не помог

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
query = '#nationaldoughnutday'
untill_date = '01-07-2019'

while True:
    try: #outer try catch 
        tweets = tweepy.Cursor(api.search, q=query + '-filter:retweets', rpp=100, lang='en',tweet_mode='extended',until = until_date).items()
        for tweet in tweets:
            try: #inner try catch 
                print "tweet : ", tweet.created_at
                #this is so that if i reconnect with cursor, i will start with the date before the last crawled tweet
                until_date = tweet.created_at.date() - datetime.timedelta(days=1)

            except tweepy.TweepError as e:
                print 'Inner TweepyError', e
                time.sleep(17 * 60)
                break
    except tweepy.TweepError as e:
        print 'Inner TweepyError',
        print "sleeping ...."
        time.sleep(17 * 60)
        continue
    except StopIteration:
                break

Заранее спасибо!

1 Ответ

0 голосов
/ 05 июля 2019

попробуйте добавить это wait_on_rate_limit=True, это не решает проблему, потому что это API Twitter для удаления этого ограничения скорости, но все равно помогает перестать отображать ошибку

...