def _request(self, url_, method_, params=None, data=None, **kwargs):
"""Perform request with Tornado's async HTTP client and return result
wrapped with `asyncio.Future`.
"""
request = HTTPRequest(utils.merge_url(url_, params),
method=method_, body=utils.encode_body(data),
**utils.norm_tornado_kwargs(**kwargs))
# Async fetch request
future = asyncio.Future(loop=self._asyncio_loop)
def on_fetch(resp):
future.set_result(resp)
try:
self._client.fetch(request, on_fetch)
except Exception as e:
future.set_exception(e)
# Wrap result
return self._result((yield from future))
评论列表
文章目录