Tornado-Lesson01-安装、路由,输入和输出
一、Tornado
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
二、安装和pycharm环境搭建
我的电脑虚拟机用nat(端口转发)就连不上网,故在此用桥接模式,在此处添加解释器路径。
创建好项目后,在工具=》Deployment=》Configuration,创建一个SFTP,原本有一个删掉,重新创建一个。填入信息如下。
RootPath是你的文件同步在服务器上的路径
左上角的勾选,SFTP名字会加粗,代表默认同步在服务器
别忘记勾选save password
在Mappings中,Deployment path on server ' ' 加一个/
在工具=》Deployment=》Options里选择如下图。配置好后,ctrl+s就可以与服务器同步代码
注:在项目设置里,
上面一行remote path /home/pyvip/work是远程代码的执行路径
下面一行的 /home/pyvip/work是代码同步上传路径
torado的安装直接在linux服务器中输入pip install toranto 就可以
三、路由
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("hello world!") application = tornado.web.Application([ (r"/", MainHandler) ]) if __name__ == '__main__': application.listen(8000) tornado.ioloop.IOLoop.instance().start();
1)入口
__name__当该模块直接运行时,__name__的值为‘__main__’,当其他模块引用该模块__name__的值为该模块的名字。
if __name__ == '__main__': 则判断直接运行该模块,则执行。
pycharm环境配置好后可以直接运行,也可以在服务器运行python test.py,正确运行后,浏览器输入http://192.168.1.104:8000/ IP地址加端口号就可以访问。
端口转发的话,用本地IP加端口号访问,127.0.0.1:8000 或者 localhost:8000
2)路由
application = tornado.web.Application([
(r"/", MainHandler) ])
路由就是访问服务器请求的入口,通过路由来自前端的请求被丢进事件池ioloop处理。
路由里可以以列表形式,放多个请求接口,匹配后面的函数MainHandler,来处理请求
http://192.168.1.104:8000/匹配(r"/", MainHandler) 中的/
四、输入和输出
import tornado.ioloop import tornado.web import tornado.httpserver import tornado.options from tornado.options import define, options define('port', default=8080, help='run port', type=int) define('version', default='0.01', help='version', type=str) class MainHandler(tornado.web.RequestHandler): def get(self): self.write("hello world!") self.write('<br>') # get_argument如果有多个name,则取最后一个 name = self.get_argument('name', 'null') self.write(name) print(name) # get_arguments()获取的是所有符合的条件结果的一个列表,write里参数只能是str,要拼接成字符串输出 age = self.get_arguments('age') self.write('<br>'.join(age)) print(age) application = tornado.web.Application([ (r"/", MainHandler) ]) if __name__ == '__main__': tornado.options.parse_command_line() print(options.port) print(options.version) http_server = tornado.httpserver.HTTPServer(application) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()
上面代码为一个比较完整的tornado的简单例子,通过http_server来监听端口,这样请求才不会阻塞,提高请求处理的效率
1)输入
获取浏览器上输入的参数和值
get_argument 如果有多个相同元素,则取最后一个,只取一个
get_arguments 获取的是所有符合的条件结果的一个列表(write里参数只能是str,要拼接成字符串输出)
http://192.168.1.104:8080/?name='小明'&name='小红'&age=18&age=19 上面代码按照以上网址显示的结果
2)输出
write(str)
write里参数只能是str,get_arguments获取到的结果是一个列表,要拼接成字符串输出
age = self.get_arguments('age')
self.write('<br>'.join(age))
否则会报错