Tweepy курсор выйдет после того, как Интернет-соединение оборвется на несколько секунд - PullRequest
0 голосов
/ 06 июня 2018

Пытаясь получить данные из Twitter, я использую этот код:

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)    
for tweet in tweepy.Cursor(api.search, q='#WorldCup -filter:retweets since:2017-6-5 lang:en', tweet_mode='extended').items():

     json.dump(tweet._json, file, sort_keys=True, indent=4)
     num += 1
     print "Writing to JSON tweet number : " + str(num)

Работает хорошо, но проблема в том, что когда интернет-соединение обрывается всего на 10 секунд и при повторном соединении оно останавливается и выходит после60 секунд с ошибкой:

Failed to send request: HTTPSConnectionPool(host='api.twitter.com', port=443): Read timed out. (read timeout=60)

Как изменить его на возобновление после повторного подключения к Интернету?

1 Ответ

0 голосов
/ 10 июня 2018

Вы можете поместить код в цикл следующим образом:

import time

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

while True:
    try:
        for tweet in tweepy.Cursor(api.search, q='#WorldCup -filter:retweets since:2017-6-5 lang:en', tweet_mode='extended').items():
             json.dump(tweet._json, file, sort_keys=True, indent=4)
             num += 1
             print "Writing to JSON tweet number : " + str(num)
    except tweepy.error.TweepError as e:
        print(str(e))

    time.sleep(60) # next search in 60 seconds, either it worked or not
...