如何在一段时间间隔后停止发送推文?

时间:2016-12-26 01:38:45

标签: python streaming tweepy

使用tweepy python库,如何在x秒后停止发送推文?

来自StreamListener的{​​{1}}会持续收集数据,直到用户手动关闭程序为止。但是,我只想收集用户定义的时间间隔的推文。

1 个答案:

答案 0 :(得分:4)

有多种方法可以解决此问题 - 多线程和创建用户定义的tweepy.streaming。我将强调解决这个问题的一种方法,并解释为什么我认为这是最好的。

除非您想要覆盖内置功能(用于存储推文),否则无需创建任何用户定义的类实例

StreamListener

这是一个简单而优雅的解决方案,适用于所有流。没有(复杂的)多线程涉及。

我在stackoverflow和许多其他网站上发现的另一种常见方法是在用户定义的import tweepy import time from tweepy import Stream, StreamListener, OAuthHandler '''Authenticate user''' CONSUMER_KEY = 'xxxxxx' CONSUMER_SECRET = 'xxxxxx' auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) '''How long do you want to stream tweets (in seconds)''' runtime = 60 #this means one minute '''Start streaming''' twitterstream = Stream(auth, StreamListener()) twitterstream.filter(track=['twitter'], async=True) #apply any filter you want time.sleep(runtime) #halts the control for runtime seconds twitterstream.disconnect() #disconnect the stream and stop streaming 内启动计时器,并检查StreamListener方法中是否超出了时间限制。虽然这对于高容量流来说是一个巧妙的黑客攻击,但它只会在流收到推文时检查超过的时间限制。如果您正在播放低音量流(当没有多少人使用您应用的过滤器发推文时),这可能是一个非常大的问题。