你可以打电话给
IOLoop.add_timeout(deadline, callback)
在指定的最后期限超时(一次射击,但您可以重新安排)时调用回调,或使用
tornado.ioloop.PeriodicCallback如果您有更定期的任务。
请参阅:http
:
//www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.IOLoop.add_timeout
更新:一些例子
import datetimedef test(): print "scheduled event fired"...if __name__ == "__main__": http_server = tornado.httpserver.HTTPServer(application) http_server.listen(8888) main_loop = tornado.ioloop.IOLoop.instance() # Schedule event (5 seconds from now) main_loop.add_timeout(datetime.timedelta(seconds=5), test) # Start main loop main_loop.start()
它
test()在5秒钟后呼叫。
更新2:
import os.pathimport tornado.httpserverimport tornado.websocketimport tornado.ioloopimport tornado.web# websocketclass FaviconHandler(tornado.web.RequestHandler): def get(self): self.redirect('/static/favicon.ico')class WebHandler(tornado.web.RequestHandler): def get(self): self.render("websockets.html")class WSHandler(tornado.websocket.WebSocketHandler): def open(self): print 'new connection' self.write_message("Hi, client: connection is made ...") tornado.ioloop.IOLoop.instance().add_timeout(datetime.timedelta(seconds=5), self.test) def on_message(self, message): print 'message received: "%s"' % message self.write_message("Echo: "" + message + """) if (message == "green"): self.write_message("green!") def on_close(self): print 'connection closed' def test(self): self.write_message("scheduled!")handlers = [ (r"/favicon.ico", FaviconHandler), (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': 'static'}), (r'/', WebHandler), (r'/ws', WSHandler),]settings = dict( template_path=os.path.join(os.path.dirname(__file__), "static"),)application = tornado.web.Application(handlers, **settings)import datetimeif __name__ == "__main__": http_server = tornado.httpserver.HTTPServer(application) http_server.listen(8888) tornado.ioloop.IOLoop.instance().start()


