1

我读了《龙卷风简介》一书。它在使用 twitter 搜索 API 的应用程序中引入了 tornado 的异步功能。

代码如下:

class IndexHandler(tornado.web.RequestHandler):
     @tornado.web.asynchronous
     @tornado.gen.engine
     def get(self):
        query = self.get_argument('q')
        client = tornado.httpclient.AsyncHTTPClient()
        response = yield tornado.gen.Task(client.fetch,
            "http://search.twitter.com/search.json?" + \
            urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}))
        ...
        self.finish()

它使用 v1 twitter API 来搜索密钥。但是,新的v1.1 twitter API禁止使用非 oauth 请求。因此,我必须将 oauth 库与我的消费者密钥和访问密钥一起使用来请求 twitter 搜索 API。

def request_twitter(url, http_method = 'GET', post_body = '', http_headers = ''):
    consumer = oauth.Consumer(key = consumer_key, secret = consumer_secret)
    token = oauth.Token(key = access_token, secret = access_secret)
    client = oauth.Client(consumer, token) 
    request = client.request(url, method = http_method, body = post_body, headers = http_headers)
    return request

但是 oauth 客户端不提供异步请求方式。所以我想知道如何在 python 中使用 oauth 客户端向 twitter API 发出异步请求?谢谢。

4

1 回答 1

3

看一下 Tornado 提供的TwitterMixin并研究一下它的代码

于 2013-07-17T00:09:27.693 回答