在DELETE rest api调用上断开TwythonStreamer

时间:2013-09-26 08:40:38

标签: python rest tornado twitter-streaming-api twython

这是我在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')

我创建此流,在GET REST API调用我的Web服务器时查找“badminton”。虽然它没有编码,但它将是一个异步调用,这意味着我将返回一个响应,如“1”,表示流已成功创建。

当我收到值为“羽毛球”的DELETE REST API调用时,如何 self.disconnect

2 个答案:

答案 0 :(得分:1)

您的DELETE处理程序将具有与self处理程序不同的GET(始终为每个请求实例化RequestHandler。您需要存储GET某处的{1}}处理程序,也许是将关键字映射到一组处理程序的全局字典(不要忘记在on_finish中删除它。)查看Tornado chat demo以及它如何管理服务员。

答案 1 :(得分:0)

使用class属性来保存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]