tornado【5】阻塞与异步概念

在tornado中,我们谈到的阻塞一般是针对网络IO,而忽略其它的阻塞(磁盘IO, 互锁)。

异步函数在结束之前就返回了,它通常在后台触发一些任务,等执行完之后再调用某些操作。有很多异步接口的实现:

  • 回调函数(常用)
  • 返回一个占位符(Future, Promise,Defered)
  • 传送给队列
  • 信号机制

协程方式编写的代码:

from tornado import gen
@gen.coroutine
def fetch_coroutine(url):
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(url)
    raise gen.Return(response.body)  #返回一个Future对象

在有yield的生成器中可以用raise gen.Return返回一个Futrue对象。在Python3中可以直接用return

你可能感兴趣的:(tornado【5】阻塞与异步概念)