@ tornado.web.asynchronous decorator是什么意思?

lin*_*nbo 18 python tornado

  1. 如果代码没有使用这个装饰器,它是否是非阻塞的?
  2. 为什么这个名字是异步的,这意味着添加装饰器让代码异步?
  3. 为什么@ tornado.gen总是和@ tornado.web.asynchronous一起使用?

Col*_*ean 22

@tornado.web.asynchronous 防止RequestHandler自动调用self.finish().而已; 它只是意味着Tornado将保持连接打开,直到您手动调用self.finish().

  1. 不使用此装饰器的代码可以阻止或不阻止.使用装饰器不会以任何方式改变它.

  2. 正如@Steve Peak所说,您使用装饰器进行异步请求,例如数据库检索.

  3. 针对Tornado 3.1+进行了更新:如果您使用@gen.coroutine,则无需使用@asynchronous.我相信旧的@gen.engine界面仍然需要@asynchronous.


Ste*_*eak 5

  1. 这里回答:异步与非阻塞

  2. 想想这样.当您需要请求说出数据库或其他URL来检索数据时,您不希望阻止龙卷风IO.因此,@tornado.web.asynchronous允许IO在等待加载内容时处理其他请求(例如数据库或URL).

  3. 它们是相似的.你最有可能会使用@tornado.web.asynchronous.