使用tornado httpclient的异步库AsyncHTTPClient构建中转接口 推荐
2014-04-12 23:21
871 查看
前言:
我这里简单的描述一下中转接口,因为权限和各种的限制导致不是所以人都可以查询想要的信息,比如他的资产。然而我这边也不能直接从库里面查询,也是要通过rest的模式去访问。
其实不用说的那么多,大家做平台开发的时候,一定会遇到去访问远端的数据,如果你用tornaod的话,就可以用httpclient的异步模式了。
简单说下,什么是httpclient包? httpclient包是tornaod自带的http客户端,你可以相称curl和urllib2,他们有的功能httpclient也都有的。
更多文章请关注我的个人站点, xiaorui.cc
tornado的httpclient包,包含了两个模块,一个是同步的,一个是异步的。
http_client = AsyncHTTPClient()
这个是异步非阻塞的 http客户端, 这种方法需要提供 callback,当然他的异步是在tornado的体系里面体现出来的。
http_client = httpclient.HTTPClient()
这个同步阻塞的 http客户端, 这个完全就是同步的,也就是说,他堵塞了后,别人就不能在访问了。
这里简单说下他的用法:
用法很简单,这里的handle_reques是回调,也就是说,我访问了后产生了io堵塞,我会扔到后面,他自己搞定了后,直接会去调用handle_request的函数。
大家可以多加上几个访问很慢的网站或者是根本不能访问的网站测试下。
在服务端看到的日志是并发请求过来的。
大体的功能大家都了解了,现在说说用httpclient 常用的用法:
超时,这个很常用吧。
通过httpclient调用别人的接口,get post参数。
有些接口需要你提交当前的cookie通过
好了,就说这么多了。
我这里简单的描述一下中转接口,因为权限和各种的限制导致不是所以人都可以查询想要的信息,比如他的资产。然而我这边也不能直接从库里面查询,也是要通过rest的模式去访问。
其实不用说的那么多,大家做平台开发的时候,一定会遇到去访问远端的数据,如果你用tornaod的话,就可以用httpclient的异步模式了。
简单说下,什么是httpclient包? httpclient包是tornaod自带的http客户端,你可以相称curl和urllib2,他们有的功能httpclient也都有的。
更多文章请关注我的个人站点, xiaorui.cc
tornado的httpclient包,包含了两个模块,一个是同步的,一个是异步的。
http_client = AsyncHTTPClient()
这个是异步非阻塞的 http客户端, 这种方法需要提供 callback,当然他的异步是在tornado的体系里面体现出来的。
http_client = httpclient.HTTPClient()
这个同步阻塞的 http客户端, 这个完全就是同步的,也就是说,他堵塞了后,别人就不能在访问了。
这里简单说下他的用法:
用法很简单,这里的handle_reques是回调,也就是说,我访问了后产生了io堵塞,我会扔到后面,他自己搞定了后,直接会去调用handle_request的函数。
import tornado.ioloop from tornado.httpclient import AsyncHTTPClient def handle_request(response): '''callback needed when a response arrive''' if response.error: print "Error:", response.error else: print 'called' print response.body http_client = AsyncHTTPClient() # we initialize our http client instance http_client.fetch("http://xiaorui.cc", handle_request) # here we try # to fetch an url and delegate its response to callback tornado.ioloop.IOLoop.instance().start() # start the tornado ioloop to # listen for events
大家可以多加上几个访问很慢的网站或者是根本不能访问的网站测试下。
#xiaorui.cc import tornado.ioloop from tornado.httpclient import AsyncHTTPClient def handle_request(response): '''callback needed when a response arrive''' if response.error: print "Error:", response.error else: print 'called' print response.body http_client = AsyncHTTPClient() for i in range(10): http_client.fetch("http://10.58.101.248/testsleep", handle_request) tornado.ioloop.IOLoop.instance().start()
在服务端看到的日志是并发请求过来的。
大体的功能大家都了解了,现在说说用httpclient 常用的用法:
超时,这个很常用吧。
http_client.fetch("http://www.youtube.com",request_timeout=3,callback=self.on_fetch)
通过httpclient调用别人的接口,get post参数。
from tornado.httputil import url_concat params = {"a": 1, "b": 2} url = url_concat("http://xiaorui.cc/", params) http_client = AsyncHTTPClient() http_client.fetch(url, request_callback_handler)
有些接口需要你提交当前的cookie通过
login_cookies = response.headers.get_list('Set-Cookie') request = httpclient.HTTPRequest( url='url', #这里的url想要有东西就需要带着cookie method='GET', headers=self.__login_headers, #在这里携带cookie信息 )
好了,就说这么多了。
相关文章推荐
- 异步httpclient(httpasyncclient)的使用与总结
- Android 异步请求类库Async_Http_Client的使用方法
- android(21)(使用HttpURLConnection,HttpClient和AsyncHttpClient分别实现post和get请求数据)
- 异步HttpAsyncClient框架的学习和使用
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
- 使用HttpAsyncClient进行异步获取数据
- Python的Tornado框架的异步任务与AsyncHTTPClient
- Tornado异步任务的实现(一)——tornado.httpclient.AsyncHTTPClient
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
- 使用AsyncHttpClient下载图片出现org.apache.http.client.HttpResponseException: Content-Type not allowed!
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
- Androidx学习笔记(40)--- 使用异步HttpClient(android-async-http-master)做get提交
- Android学习(53) -- 使用异步HttpClient--loopj/android-async-http
- 开源的HttpClient框架-----AsyncHttpClient的使用
- Androidx学习笔记(41)---使用异步HttpClient(android-async-http-master)做Post提交
- Android网络编程 HttpURLConnection,HttpClient,Asynchttpclient使用
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
- HttpAsyncClient (异步http 请求)的连接池使用
- Python的Tornado框架的异步任务与AsyncHTTPClient
- 异步http开源框架使用(AsyncHttpClient)