1

这是我对 TwythonStreamer 的包装:

from twython import TwythonStreamer

class Twitter_talker(TwythonStreamer):
    def __init__(self):
        super(Twitter_talker, self).__init__(<my credentials here...>)
    def on_success(self, data):
        self.disconnect()
        print data

    def on_error(self, status_code, data):
        print status_code
        self.disconnect()

这是我从 twitter 获取状态的调用:

class Tweet_Handler(tornado.web.RequestHandler):
def get(self):
    stream = Twitter_talker()
    stream.statuses.filter(track='badminton')

我创建了这个流,在对我的 Web 服务器的 GET REST API 调用中寻找“羽毛球”。虽然它没有编码,但它将是一个异步调用,这意味着我将返回一个类似“1”的响应,表明流已成功创建。

self.disconnect当我收到一个值为 "badminton" 的 DELETE REST API 调用时,我该怎么办?

4

2 回答 2

1

您的DELETE处理程序将self与您的GET处理程序不同(总是为每个请求实例化一个新的处理程序RequestHandler。您需要将GET处理程序存储在某处,也许是一个将关键字映射到一组处理程序的全局字典(不要忘记将其删除on_finish) . 查看 Tornado聊天演示以及它如何管理服务员集。

于 2013-10-02T03:16:30.743 回答
0

使用类属性来保存 Twitter Talkers 的字典。

class Tweet_Handler(tornado.web.RequestHandler):

    requests = {}

    def get(self):
        stream = Twitter_talker()
        stream.statuses.filter(track='badminton')
        Tweet_Handler.requests['badminton'] = stream

    def delete(self):
        value = self.get_argument("value")
        if value in Tweet_Handler.requests:
             Tweet_Handler.requests[value].disconnect()
             del Tweet_Handler.requests[value]
于 2013-10-08T08:26:40.597 回答