延迟相当于龙卷风(tornado equivalent of delay)

2019-06-25 15:34发布

是否有龙卷风的延迟功能等效的命令,而不会影响主进程进入睡眠状态(因此回调将即使在主线程dealying一个新的函数调用执行)

Answer 1:

试试这个:

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()

来自这里 。



Answer 2:

需要注意的是,因为他们4.1添加了一个gen.sleep(delay)方法。

所以

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

只想成为

yield gen.sleep(5)


Answer 3:

可能是多余的

我喜欢回调风格

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()


文章来源: tornado equivalent of delay