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

2 投票
2 回答
2430 浏览
提问于 2025-04-17 21:24

我使用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

撰写回答