mport tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument(‘greeting‘, ‘hello‘)
self.write(greeting + ‘, friendly user!‘)
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
这是tornado一个简单服务器的例子
define("port", default=8000, help="...", type = int)定义了服务器监听的默认端口
IndexHandler类用来处理请求,get_argument可以获取get或者post请求中的关键字参数,然后用write输出到页面
if __name__ == "__main__":里面的代码是实际上运行服务器的代码,parse_command_line函数解析命令行的输入,然后建立Application类型的应用,里面定义handlers,处理不同的url对应的处理类,用正则表达式进行匹配。通过这个app对象可以建立HTTPServer来监听端口,最后运行IOLoop来准备接受http请求
tornado的url正则默认包含行起始和结尾的,如"/"已经表示"^/$"
命令行执行python hello.py --port=8000可以制定端口运行服务器
终端使用curl来调试:$ curl http://localhost:8000/?greeting=Haroo
当出现错误时,tornado会给客户端返回错误状态码和错误信息,如果要自己设置错误响应,可以重写RequestHandler类中的write_error函数
class IndexHandler(tornado.web.RequestHandler):
def get(self):
...
def write_error(self, status_code, **kwargs):
self.write("damn it, user! you caused a %d error." % status_code
原文:http://www.cnblogs.com/jolin123/p/4499791.html