Tornado个人学习记录

学习自Tornado入门

导入Tornado

pip install Tornado

基础Tornado启动实例

Tornado个人学习记录

打开浏览器可以看到localhost:8888可以看到hello,world

tornado主要构成

一个普通的tornado web通常有四部分:
1)ioloop实例,他是全局的Tornado事件循环,是服务器的引擎核心,示例中tornado.ioloop.IOLoop.current()就是默认的tornado ioloop实例。
2)app实例,他代表一个完成的后端app,他会挂接一个服务端端口对外提供服务,一个ioloop中可以有多个app,但一般不会用到多个,感觉类似Springboot中的启动类?
3)handler类,业务逻辑,类似service和serviceImpl,我们进行服务端开发就是写一些handler来实现请求。
4)路由表,他将指定url和handler挂接起来,形成一个表,根据请求的访问url来找到对应业务的handler。

这四个组件的关系是,一个ioloop包含多个app,一个app包含一个路由表,一个路由表有多个handler,ioloop是核心,是发动机,负责接收和相应客户端请求,负责驱动handler运行,负责服务器内部定时任务的执行。

Tornado流程

当一个请求到来时,ioloop读取这个请求解包为一个http请求对象,找到对应的app路由表,通过请求对象的url查询对应的handler,执行handler,一般handler都会返回一个对象,ioloop负责将对象包装成http响应对象序列化发给客户端。
同一个ioloop实例运行在一个单线程环境下。

提供一个阶乘服务

服务器会提供阶乘的缓存,已经计算过的就存起来,下次就不用重新计算了。使用Python的好处就是,我们不用当心阶乘的计算结果会溢出,Python的整数可以无限大。
Tornado个人学习记录
Tornado个人学习记录

打开浏览器,键入http://localhost:8888/fact?n=50,可以看到浏览器输出了