0

作为 python 的初学者,我有点不知所措,但我设法通过 Django 应用程序和tweetstream建立了与 twitter 流 api 的连接。

在应用程序中,我可以执行以下操作,并通过 django 测试 Web 服务器将持续的推文流输出到控制台。

with tweetstream.FilterStream(arg, arg, arg, arg, arg) as stream:
   for tweet in stream:
       print tweet

我也可以做这样的事情,这样我就可以查询信息流。

my_tweetstream = tweetstream.FilterStream(arg, arg, arg, arg, arg)
print my_tweetstream.variable

理想情况下,我想启动 tweetstream 以便它能够记录推文,但也能够访问管理页面,该页面在刷新时会查询连接并返回连接多长时间的数据,返回了多少推文等

问题是我不知道如何使用到目前为止的代码来完成。例如,我如何“存储”连接以便查询它?

请有人介意解释解决此问题的正确方法,哪些资源可以帮助我更好地理解问题?

提前致谢,

4

1 回答 1

1

我最近为一个项目做了这个。您需要将流使用者作为单独的 python 进程运行。它根本不需要成为 Django 应用程序的一部分。

基本上我有:

from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener

from myproject.myapp.utils import do_something_with_tweet

class StdOutListener(StreamListener):

    def on_data(self, data):
        do_something_with_tweet(data)
        return True

def main():
    listener = StdOutListener()

    auth = OAuthHandler(
        TWITTER_CONSUMER_KEY,
        TWITTER_CONSUMER_SECRET)

    auth.set_access_token(
        TWITTER_ACCESS_TOKEN,
        TWITTER_ACCESS_SECRET)

    try:
        stream = Stream(auth, listener)
        stream.filter(track=['#something', ])
    except (KeyboardInterrupt, SystemExit):
        print 'Stopping Twitter Streaming Client'


if __name__ == '__main__':
    main()

这样,您可以将其作为一个单独的进程运行,并将推文数据传递给某个函数以保存它或其他任何东西,Django 可以在其他地方愉快地运行。

加分是使用 celery 在异步任务中处理您的推文数据:https ://celery.readthedocs.org

于 2013-07-05T14:06:34.150 回答