龙卷风相当于延迟

时间:2012-06-20 22:09:22

标签: python tornado

在龙卷风中是否存在延迟函数的等效命令而不影响主进程进入休眠状态(因此即使主线程正在分析新的函数调用,回调也会执行)

3 个答案:

答案 0 :(得分:30)

试试这个:

import time
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, asynchronous
from tornado import gen

class MyHandler(RequestHandler):
    @asynchronous
    @gen.engine
    def get(self):
        self.write("sleeping .... ")
        self.flush()
        # Do nothing for 5 sec
        yield gen.Task(IOLoop.instance().add_timeout, time.time() + 5)
        self.write("I'm awake!")
        self.finish()

取自here

答案 1 :(得分:19)

请注意,自4.1以来,他们添加了gen.sleep(delay)方法。

所以

yield gen.Task(IOLoop.instance().add_timeout, time.time() + 5)

将成为

yield gen.sleep(5)

答案 2 :(得分:6)

可能是多余的

我喜欢回调式

class MyHandler(RequestHandler):
    @asynchronous
    def get(self):
        self.write("sleeping .... ")
        self.flush()
        IOLoop.instance().add_timeout(time.time() + 5, self._process)

    def _process(self)
        # Do nothing for 5 secs
        self.write("I'm awake!")
        self.finish()