tornado 01 路由、输入与输出
tornado 01 路由、输入与输出
一、安装tornado
- pyvip@Vip:~$ workon py3env #安装python3的虚拟环境
- (py3env) pyvip@Vip:~$ pip install tornado #安装tornado
二、使用tornado
- #创建一个py文件,然后在虚拟机中打开文件即可
- #要让服务一直在运行当中,这就要用到tornado.ioloop模块
- #为了便于开发,就要用到tornado.web模块
- import tornado.ioloop #开启循环,让服务一直等待请求的到来
- import tornado.web #web服务基本功能都封装在此模块中
- class MainHandler(tornado.web.RequestHandler):
- def get(self):
- self.write('hello')
- application = tornado.web.Application(
- [
- (r'/',MainHandler)
- ]
- )
- if __name__ == '__main__':
- application.listen(8080)
- tornado.ioloop.IOLoop.instance().start()
三、路由
- #端口:为了提高效率,给专门的服务开专门的“门”
- #客户端(浏览器、windows) 访问服务器(虚拟机、linux),然后虚拟机的web服务和tornado服务返回数据给客户端,中间由virtualBox分隔开
- #客户端的端口8080与服务器的端口8080是不一样的,是通过virtualbox的端口转发实现的
- #客户端的8080被访问的时候,被virtualbox占用了,virtualbox把请求发送到服务器的8080端口去,然后再经过tornado服务处理
- #端口未被占用才能够监听,被占用了再监听会报错
反馈
- #浏览器报错
- #无法访问:表示服务器没开或者炸了,你根本进不去
- #404:Not Found:表示禁止访问,你近视进去了,但是无法访问内容
路由表
- application = tornado.web.Application(
- [
- (r'/index',MainHandler) #r''表示去除转译
- ]
- )
- #客户端访问服务器可以看成是:客户端读取服务器资源的一个过程,路由表就指定了具体访问什么资源
- #路由表是访问服务器的入口
- #在工作中如果有新的需求,往往只需要在路由器中添加新的路由即可
Handler
- class MainHandler(tornado.web.RequestHandler):
- def get(self):
- self.write('hello')
- #在这里指定请求的资源,比如输出hello;需要继承tornado.web.RequestHandler
- import tornado.ioloop
- import tornado.web
- class MainHandler(tornado.web.RequestHandler): #括号内继承父类
- def get(self):
- self.write('hello') #write能够将内容输出到浏览器当中
- application = tornado.web.Application(
- [ #列表里面是一个个的元组,多个元组分别用逗号隔开,元组里面有路径由该路径下的内容组成
- (r'/index',MainHandler) #/index表示路径,当访问的时候输入这个路径,返回的就是这个路径下的内容;如果访问的时候未找到该路径,就会返回404错误;这也就是路由的意义
- ]
- )
- if __name__ == '__main__':
- application.listen(8080) #监听8080端口
- tornado.ioloop.IOLoop.instance().start() #让这个tornado一直保持运行的状态
四、启动tornado
- #怎样获取命令行参数 argv
- import tornado.httpserver
- import tornado.ioloop
- import tornado.options
- import tornado.web
- from tornado.options import define,options
- define('port',default=8080,help = 'run port',type=int) #设定port的默认值为8080,在linux里面可以指定port的值,类型为整型
- class IndexHandler(tornado.web.RequestHandler):
- def get(self):
- self.write('dage')
- application = tornado.web.Application(
- handlers=[
- (r'/index',IndexHandler)
- ]
- )
- if __name__ == '__main__':
- tornado.options.parse_command_line()
- http_server = tornado.httpserver.HTTPServer(application) #返回网站服务的实例,下面再用这个实例进行监听
- http_server.listen(options.port) #option.port就是define定义的port,把写死的端口变成一个可变的端口
- tornado.ioloop.IOLoop.instance().start()
五、输入与输出
- #tornado如何与浏览器做交互
- #通过url,“路由”+ “?”+“变量名”+“变量”
- import tornado.httpserver
- import tornado.ioloop
- import tornado.options
- import tornado.web
- from tornado.options import define,options
- define('port',default=8080,help = 'run port',type=int)
- class IndexHandler(tornado.web.RequestHandler):
- def get(self):
- self.write('dage')
- class OutHandler(tornado.web.RequestHandler):
- def get(self):
- name = self.get_argument('name','no') #用get_agument来定义变量名和默认变量值,如果不设置默认变量的时候并且没有传入参数就会报错
- self.write('hello '+ name)# write 便是输出
- self.write('aaa\naaa') #加了\n表示换行,但在网页里面显示不出来换行,原因是html里面的换行是br,所以这里面要换行需要用<br>;write可以解析html的CSS、JavaScript
- application = tornado.web.Application(
- handlers=[
- (r'/index',IndexHandler),
- (r'/out',OutHandler)
- ]
- )
- if __name__ == '__main__':
- tornado.options.parse_command_line()
- http_server = tornado.httpserver.HTTPServer(application)
- http_server.listen(options.port)
- tornado.ioloop.IOLoop.instance().start()
6、环境配置问题
- #代码同步
- Tools --->Deployment---->Configuration
tornado 01 路由、输入与输出的更多相关文章
- 关于OJ的输入和输出(转)
ACM竞赛之输入输出以下内容来源于互联网.在ACM程序设计竞赛中,一道题目的所有测试数据是放在一个文本文件中,选手将一道题目的程序提交给评判系统运行,程序从该文件中读取测试数据,再把运行结果输出到另一 ...
- CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制
第2课 CC2530的通用I/O端口输入和输出控制 广东职业技术学院 欧浩源 一.CC2530的引脚概述 CC2530微控制器采用QFN40封装,有40 个引脚.其中,有21个数字I/O端口,其中 ...
- 【socket-python应用】控制泓格ET-7044通信模块输入DI输出DO
socket-python应用:控制泓格ET-7044通信模块输入DI输出DO 本节主要内容: 1.socket-python建立TCP通信 2.配合泓格通信模块说明书,查看输入输出寄存器地址,发送指 ...
- 雷林鹏分享:Ruby 文件的输入与输出
Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. wr ...
- 第二百五十七节,Tornado框架-路由映射,逻辑处理,文件归类配置
Tornado框架-路由映射,逻辑处理,文件归类配置 Tornado框架 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起 ...
- 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制
第2课 CC2530的通用I/O端口输入和输出控制 小蜜蜂科教 / 广东职业技术学院 欧浩源 [通用I/O端口视频教程:https://v.qq.com/x/page/x0793aol7us.ht ...
- 了解一下C++输入和输出的概念
我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...
- [总结] I/O输入,输出
I/O输入,输出第一:先判断到底是输入还是输出,站在程序的立场第二:判断是传递字节,还是字符,决定管道粗细,字节流是最基本的数据输出管道.字符类型管道专门用来传送文本数据.Java流的四大父类:1.字 ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
随机推荐
- Javamelody部署手册
Javamelody部署手册 1. Javamelody下载 下载地址:http://code.google.com/p/javamelody/downloads/list(注:需要FQ才能打开下载 ...
- 【FZU2278】YYS
题意 这里有n种卡片,如果你想得到一张新的卡片,你需要花费W枚硬币来抽一张卡片.每次只能抽一张.所有的卡片出现的概率都是1/n,你每天可以得到1枚硬币.初始时候没有硬币也没有卡片.每W天,你就会抽一张 ...
- 使用百度翻译的API接口
http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码 有一个PHP文 ...
- solidity mapping of mapping
solidity mapping of mapping,两层映射,用的时候可以像二维数组一样去访问和修改值,非常方便. 以下代码示例中的这一句: mapping(string => mappin ...
- Linux mii-tool命令
一.简介 mii-tool 是一个用来查看,管理介质的网络接口的状态的工具. 二.选项 usage: mii-tool [-VvRrwl] [-A media,... | -F media] [int ...
- 3.Dynamic Layout 动态布局。在槽中处理布局
在应用程序中,一个界面的布局基本都是固定的. 在这个实例中,我们把管理布局的代码放在槽中.这样点击一次按钮,触发槽.布局改变一次.这样就成为一个动态布局. (一) 水平和竖直布局改变 横向: 纵向: ...
- Django----解决跨域
cors(跨域资源共享): 本质设置响应头 定制中间件 cors.py 后在settings.py中间件中配置 from django.utils.deprecation import Middlew ...
- Part5核心初始化_lesson1---异常向量表
1.1异常 异常向量: 异常向量表: 代码的编写 start.S文件 gboot.lds链接器脚本文件 makefile工程文件:
- hdu 4740 The Donkey of Gui Zhou
1.扯犊子超多if else 判断的代码,华丽丽的TLE. #include<stdio.h> #include<string.h> #define N 1010 int ma ...
- 2.8.2 并发下的ArrayList,以及源码分析
package 第二章.并发下的ArrayList; import java.util.ArrayList;import java.util.List; /** * Created by zzq on ...