如何在tweepy中刷新Twitter过滤流线程?
我使用tweepy来跟踪带有不同标签的推文。
twitterStream=Stream(OAuthObject,listenerFunction())
twitterStream.filter(track=[u'hashtags separated by comma'])
现在每隔3个小时,我需要从数据库中获取最新的标签,并更新推文流线程,我该怎么做呢?
2 个回答
0
你可以在on_status
这个方法里返回False
,或者在其他回调方法里这样做。这会取消当前的流,控制权就会回到你的应用程序。
在on_status
方法中,你可以检查一下当前时间,如果已经过去了三个小时,就返回False
。然后你可以再次调用filter
,传入你数据库查询中不同的标签。
6
我解决这个问题是因为我查看了一个Stream类的构造函数,发现有一个(async)参数。我把这个参数设置为true,下面是我的代码:
twitterStream=Stream(OAuthObject,listenerFunction())
while True:
if twitterStream.running is True:
twitterStream.disconnect()
keywords=getKeywordsFromDb() # return string of keywords seaprated by comma
if keywords=='':
print 'no keywords to listen to'
else:
twitterStream.filter(track=[keywords],async=True) # Open the stream to work on asynchronously on a different thread
time.sleep(3600) # sleep for one hour