0
使用tweepy
python庫,如何在x秒後停止流式傳輸?如何在一段時間間隔後停止流媒體推文?
StreamListener
從tweepy.streaming
不斷收集數據,直到用戶手動關閉程序。但是,我只想收集用戶定義的時間間隔的推文。
使用tweepy
python庫,如何在x秒後停止流式傳輸?如何在一段時間間隔後停止流媒體推文?
StreamListener
從tweepy.streaming
不斷收集數據,直到用戶手動關閉程序。但是,我只想收集用戶定義的時間間隔的推文。
有多種方法可以解決這個問題 - 多線程和創建用戶定義的StreamListener
。我將強調解決這個問題的一種方法,並解釋爲什麼我覺得這是最好的。
沒有必要,除非你想重寫以創建類的任何用戶定義的情況下,內置的功能(用於存儲微博)
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
這是一個簡單而優雅的解決方案,並適用於所有的流。沒有涉及(複雜)多線程。
我在stackoverflow和其他許多網站上發現的另一種常見方法是指在用戶定義的StreamListener
內啓動計時器,並檢查self.on_data()
方法中的時間限制是否已超出。雖然這對於大容量數據流來說很簡單,但它只會在流收到推文時檢查超時。如果您要傳送低流量的流(當沒有多少人使用您應用的過濾器發送消息時),這可能是一個相當大的問題。
許多人有同樣的問題,沒有適當的解決方案。所以我決定發佈我自己的黑客來克服這個問題。 – Apara