python请求url非阻塞_Tornado请求中的非阻塞/异步URL获取

我已经从我的项目中提取了代码样本。它并不完美,但它提供了一个如何使用Tornadp的AsyncHTTPClient的方法@tornado.gen.engine

def async_request(self, callback, server_url, method=u'GET', body=None, **kwargs):

"""

Make async request to server

:param callback: callback to pass results

:param server_url: path to required API

:param method: HTTP method to use, default - GET

:param body: HTTP request body for POST request, default - None

:return: None

"""

args = {}

if kwargs:

args.update(kwargs)

url = '%s?%s' % (server_url, urlencode(args))

request = tornado.httpclient.HTTPRequest(url, method, body=body)

http = tornado.httpclient.AsyncHTTPClient()

response = yield tornado.gen.Task(http.fetch, request)

if response.error:

logging.warning("Error response %s fetching %s", response.error, response.request.url)

callback(None)

return

data = tornado.escape.json_decode(response.body) if response else None

callback(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值