tornado equivalent of delay

Gaurav picture Gaurav · Jun 21, 2012 · Viewed 10.8k times · Source

Is there an equivalent command in tornado for delay function without affecting the main process to sleep (thus the callbacks would execute even when the main thread is dealying a new function call)

Answer

Nikolay Fominyh picture Nikolay Fominyh · Jun 21, 2012

Try this:

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

Taken from here.