Tornado 介绍
- 高并发网络框架
- 非阻塞
- 完备的WEB组件
- 完整的WebSocket(长链接)
- 高效的 HttpClient
Tornado异步调用
方式1:
from tornado.httpclient import AsyncHttpClient
async def visit_baidu() :
client = AsyncHttpClient()
response = await client.fetch("http://www.baidu.com")
# 异步获取结果
print(response.body.decode())
方式2:
from tornado.httpclient import AsyncHttpClient
from tornado import gen
@gen.coroutine
def visit_baidu() :
client = AsyncHttpClient()
response = yield client.fetch("http://www.baidu.com")
# 异步获取结果
print(response.body.decode())
异步 函数的 调用
- 在协程函数中,通过 yield 调用 异步函数
- IOLoop 未启动 的 run_sync 调用
- IOLoop 启动 后用 spawn_callback 调用
from tornado.ioloop import IOLoop
if __name__ == "__main__" :
IOLoop.current().run_sync("visit_baidu")