#!/usr/bin/env python26 #-*- coding:utf8 -*- import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define,options define("port",default=8000,help="run on this port",type=int) class TestHandler(tornado.web.RequestHandler): def get(self): self.write("Hello world!") greeting=self.get_argument('greeting','Hello') self.write(greeting+',friendly user! ') print "*"*30 def main(): tornado.options.parse_command_line() app=tornado.web.Application(handler=[(r"/",TestHandler)]) http_server=tornado.httpserver.HTTPServer(app) try: http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start() except KeyboardInterrupt,e: print e if __name__ == "__main__": main()
上述的脚本在测试过程中,通过print发现没有输出,断定原因在于get函数没有被调用
对比之前写的代码,原来是这里写错了
app=tornado.web.Application(handlers=[(r"/",TestHandler)])
tornado.web.Application = class Application(__builtin__.object) | A collection of request handlers that make up a web application. | | Instances of this class are callable and can be passed directly to | HTTPServer to serve the application:: | | application = web.Application([ | (r"/", MainPageHandler), | ]) | http_server = httpserver.HTTPServer(application) | http_server.listen(8080) | ioloop.IOLoop.instance().start()
通过帮助文档中没有查到默认参数名是handlers,不过测试可以发现确实如此,后续可以不加上。
【参考资料】