这里将从服务开启到请求进入之后的顺序进行源码解析。分析有误的地方希望大家指出哦~
开发环境:
- python3.7、tornado5.0
我们先创建一个最简单的tornado应用,从简单的栗子开始进行源码分析:
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 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()
程序运行
首先,进入main中:
tornado.options.parse_command_line()
这一句通常是配合define("port", default=8000, help="run on the given port", type=int)
一起用的。他会解析命令行参数
实例化tornado.web.Application
接下来,实例化tornado.web.Application
对象,最简单的方式,就是这样的:
app = tornado.web.Application(
handlers=[
(r"/"