0
我想写一个简单的函数,让我从重复创建AsyncHTTPClient
和HTTPRequest
并做client.fetch
释放我。如何制作简化与龙卷风AsyncHTTPClient请求的包装?
现在,我想出了下面的代码:
def async_fetch(url, method='GET', headers={}, body=None):
'''Fetch an HTTP resource asynchronously
using `tornado.httpclient.AsyncHTTPClient`
'''
if isinstance(body, dict):
body = urlencode(body)
request = HTTPRequest(url, method=method, headers=headers, body=body)
client = AsyncHTTPClient()
response = yield client.fetch(request)
return response.body
显然,这是行不通的。它本身返回一个生成器,我不知道如何将它应用到RequestHandler中。
我只能返回client.fetch(client)
,这是一个任务,并且在处理程序中产生这个任务,但是我想要处理响应。
任何提示?谢谢!
谢谢!我正在检查。没想到它那么简单。同时我在文档中记得它提到gen.Return与3.3之后的Python返回相同。所以我猜关键不是gen.Return,而是协程装饰器? – 2014-11-06 09:57:45
@KenetJervet查看更新。希望它会有用。 – Vladimir 2014-11-06 10:44:57