Tweepy Streaming在X秒或几分钟后停止收集推文

时间:2016-02-19 09:00:20

标签: tweepy

正在开展一个项目,为今天庆祝生日的名人发送推文,但问题是他们中的一些人在推特上没有活跃或推文来得很晚。有没有办法在x秒或分钟后从tweepy流API中超时?

我试着搜索这个,但得到下面的链接,谈到x量后停止收集,但我的查询是准时的 Tweepy Streaming - Stop collecting tweets at x amount

在我的streamlistner类中,我使用了以下从未执行的函数

class MyStreamListener(StreamListener):

def __init__(self, api=None):
    super(MyStreamListener, self).__init__()
    self.num_tweets = 0
    self.start_time = time.time()
    self.time_limit = 120

def on_status(self, status):
        global twee_file,twee_outfile
    #Don't wait forever for tweets instead wait for 2 minutes
    #while (time.time() - self.start_time) < self.time_limit :
        self.num_tweets += 1
        if self.num_tweets < 2:
            twee_outfile.write(status.text)
            twee_outfile.write(str("\n"))
            print(status.text)
            print "Author's Screen name : %s" % status.author.screen_name
            print "Time of creation : %s" % status.created_at
            print "Source of Tweet : %s" % status.source
            return True
        else:
            twee_outfile.close()
            return False
    #else:
       # print "Time Exhausted"
       # return False

def on_error(self, status_code):
    print "Too soon reconnected . Will terminate the program"
    print status_code
    sys.exit()
def on_timeout(self):
    print  'Timeout...'

twitterStream = Stream(auth,listener = MyStreamListener(),timeout = 60)

我将超时设置为60,但即使没有推文5分钟或更长时间,上述功能也从未调用过。我也试过检查on_status的时间,但问题是如果我们根本没有任何推文那么这个函数就不会被执行。

有什么方法可以解决这个问题吗?

0 个答案:

没有答案