tornado 的异步原理:
1,Tornado 的异步模型 是由事件驱动以及特定的回调函数(callback)所组成的!
2,tornado 讲特定处理的回调函数与该I/O 事件绑定起来,当该 I/O 事件完成后就调用绑定的回调函数,就可以处理具体的 I/O 事件
3,tornado 利用系统中高效的 I/O 事件轮询机制(epoll on Linux)来进行io 事件完成的检测!
3,无阻塞 I/O +事件驱动+高效轮询方式便组成了 Tornado 的异步模型
tornodo 协程的第一种实现形式(没有使用 epoll 机制):
import time
from tornado.httpclient import HTTPClient,AsyncHTTPClient

def ssync_visit():
    old_time = time.time()
    #HTTPClient 是tornado 同步访问HTTP客户端
    http_client = HTTPClient()
    response = http_client.fetch('https://www.baidu.com/') # 阻塞,直到网站请求完成
    print(time.time()-old_time) #0.1808912754058838
    print(response.body)

def hendle_response(response):
    print(response.body)

def async_visit():
    old_time = time.time()
    # AsyncHTTPClient 是异步访问 HTTP客户端
    http_client = AsyncHTTPClient()
    # 不会停止,继续往下运行,当对 百度的访问结束之后进行回调
    http_client.fetch('www.baidu.com',callback=hendle_response) # 非阻塞
    print(time.time() - old_time)  #0.0051724910736083984

# ssync_visit() # 同步协程
# async_visit() #异步协程
View Code

相关文章: