我作为初学者使用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以便它能够记录推文,但也能够访问一个管理页面,在刷新时会查询连接并返回有关已连接多长时间的数据,有多少推文有已退回等
问题是我不知道如何用我到目前为止的代码完成这项工作。例如,我如何'存储'连接,以便我可以查询它?
请有人介意解释正确的解决方法,哪些资源可以帮助我更好地理解问题?
提前致谢,
答案 0 :(得分: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可以在其他地方愉快地运行。
另外一点是使用芹菜来处理异步任务中的推文数据:https://celery.readthedocs.org