如何在tweepy中刷新twitter过滤器流线程?

时间:2014-03-08 09:58:03

标签: python multithreading twitter tweepy

我使用tweepy来跟踪更改主题标签列表的推文

twitterStream=Stream(OAuthObject,listenerFunction())
twitterStream.filter(track=[u'hashtags separated by comma'])

现在每3个小时,我应该从数据库中获取最新的hashtags,并刷新流线程,我该怎么办?

2 个答案:

答案 0 :(得分:4)

当我查看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

答案 1 :(得分:0)

您可以从False或其他一些回调方法返回on_status。这将取消流,然后将控制权返回给您的应用程序。

on_status方法中,您可以检查当前时间,如果已经过了三个小时,则返回False。然后,您可以再次调用filter,从数据库查询中传递不同的主题标签。