Throwing this in my blog so I don't forget again. The way to sleep for a certain period of time using tornado.gen is:

import tornado.web
from tornado.ioloop import IOLoop
from tornado import gen

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

Simple once you see it, but for some reason this has been the hardest for me to get used to.