【问题标题】:tornado equivalent of delay龙卷风相当于延迟
【发布时间】:2012-06-23 03:25:15
【问题描述】:

在不影响主进程睡眠的情况下,tornado 中是否有等效的延迟函数命令(因此即使主线程正在处理新的函数调用,回调也会执行)

【问题讨论】:

  • 不完全确定你在问什么。你能举个例子吗?

标签: python tornado


【解决方案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()

取自here

【讨论】:

    【解决方案2】:

    可能是多余的

    我喜欢回调风格

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

    【讨论】:

      【解决方案3】:

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

      所以

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

      会变成

      yield gen.sleep(5)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多