Tornado个人学习记录
学习自Tornado入门
导入Tornado
pip install 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的整数可以无限大。
打开浏览器,键入http://localhost:8888/fact?n=50,可以看到浏览器输出了