代码之家  ›  专栏  ›  技术社区  ›  Soheil Pourbafrani

Internet连接断开几秒钟后,Tweepy光标将退出

  •  0
  • Soheil Pourbafrani  · 技术社区  · 8 年前

    尝试从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)
    

    重新连接到Internet后,如何将其更改为继续?

    1 回复  |  直到 8 年前
        1
  •  1
  •   JeffProd    8 年前

    您可以将代码放入如下循环:

    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