tornado实现的简单异步调用的例子

tornado是python实现的一个异步web框架
除了写web服务实现web api供人调用之外,自己想写一个简单的http访问,于是有了下面的代码,尽供自己记录用,其实也可以用来平时写tornado代码简单进行功能调试使用参考
test.py

#coding=utf-8
import tornado.ioloop
from tornado import gen
from tornado.httpclient import AsyncHTTPClient
from urllib import urlencode
from tornado.netutil import Resolver

AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")
Resolver.configure('tornado.platform.caresresolver.CaresResolver')
PHONE_NUMS = [
'13000000000',
'13000000001',
'13000000002',
'13000000003'
]
uri = 'http://testurl/send'
@gen.coroutine
def test_send():
    http_client = AsyncHTTPClient(max_clients=32)
    req = []
    for phone in PHONE_NUMS:
        _mesg = '验证码:%s' %phone[-6:]
        _query = dict(phone=phone, mesg=_mesg)
        query = urlencode(_query)
        _req = http_client.fetch(uri, method='POST',
                                 body=query)
        req.append(_req)
    resp = yield req
    print "resp:", resp


def test_run():
    #tornado.ioloop.PeriodicCallback(sms_send,60000).start()
    #tornado.ioloop.IOLoop.instance().start()
    ioloop = tornado.ioloop.IOLoop.current()
    ioloop.run_sync(test_send) 

if __name__ == "__main__":
    test_run()

本文中的例子在使用httpclient时候,使用了curl_httpclient这个实现,相比与tornado默认的simple_httpclient,curl_httpclient效率更高,并且还有其他的一些好处,可以参见tornado官方的文档介绍使用。
但是在使用curl_httpclient时,需要注意要配合使用异步的dns
上面的代码使用的一个异步的dns解析,在使用时需要另外安装pycares模块

pip install pycares
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值