看的教程是link。
代码
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 the 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()
效果
使用links查看localhost的8000端口
links http://localhost:8000
links http://localhost:8000/?greeting=Salutions
运行的终端显示
[root@iZbp13shnvge588mi3dnjqZ ~]# python3 /home/tornado/hello.py
[I 200611 14:00:13 web:2250] 200 GET / (127.0.0.1) 2.37ms
[I 200611 14:02:55 web:2250] 200 GET /?greeting=Salutions (127.0.0.1) 1.39ms
原理
define("port", default=8000, help="run on the given port", type=int)
定义了一个可以从终端读取的参数port。
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', friendly user!')
定义了一个tornado.web.RequestHandler的子类,用来处理请求。get函数用来处理GET请求,其中
greeting = self.get_argument('greeting', 'Hello')
用于从字符串中获取greeting的值,默认为Hello。另外
self.write(greeting + ', friendly user!')
使用了write方法,用于把字符串写入HTTP响应。
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/",IndexHandler)])
首先使用tornado.options.parse_command_line()来解析命令行,然后创建了一个tornado.web.Application类,传递handlers参数。handlers参数是 正则表达式-RequestHanlder类 对,正则表达式用于匹配并传给RequestHanlder。
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
使用Application,监听端口,最后创建IOLoop类运行。