正在开展一个项目,为今天庆祝生日的名人发送推文,但问题是他们中的一些人在推特上没有活跃或推文来得很晚。有没有办法在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的时间,但问题是如果我们根本没有任何推文那么这个函数就不会被执行。
有什么方法可以解决这个问题吗?