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 路由、输入与输出的更多相关文章

  1. 关于OJ的输入和输出(转)

    ACM竞赛之输入输出以下内容来源于互联网.在ACM程序设计竞赛中,一道题目的所有测试数据是放在一个文本文件中,选手将一道题目的程序提交给评判系统运行,程序从该文件中读取测试数据,再把运行结果输出到另一 ...

  2. CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    第2课  CC2530的通用I/O端口输入和输出控制 广东职业技术学院  欧浩源 一.CC2530的引脚概述 CC2530微控制器采用QFN40封装,有40 个引脚.其中,有21个数字I/O端口,其中 ...

  3. 【socket-python应用】控制泓格ET-7044通信模块输入DI输出DO

    socket-python应用:控制泓格ET-7044通信模块输入DI输出DO 本节主要内容: 1.socket-python建立TCP通信 2.配合泓格通信模块说明书,查看输入输出寄存器地址,发送指 ...

  4. 雷林鹏分享:Ruby 文件的输入与输出

    Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. wr ...

  5. 第二百五十七节,Tornado框架-路由映射,逻辑处理,文件归类配置

    Tornado框架-路由映射,逻辑处理,文件归类配置 Tornado框架 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起 ...

  6. 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    第2课  CC2530的通用I/O端口输入和输出控制 小蜜蜂科教 / 广东职业技术学院  欧浩源 [通用I/O端口视频教程:https://v.qq.com/x/page/x0793aol7us.ht ...

  7. 了解一下C++输入和输出的概念

    我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.除了以终端为对象进行输入和输出外,还经常 ...

  8. [总结] I/O输入,输出

    I/O输入,输出第一:先判断到底是输入还是输出,站在程序的立场第二:判断是传递字节,还是字符,决定管道粗细,字节流是最基本的数据输出管道.字符类型管道专门用来传送文本数据.Java流的四大父类:1.字 ...

  9. C#语言基础— 输入与输出

    C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...

随机推荐

  1. 01.webservice介绍

    不实现异构,实现远程系统之间的调用.

  2. Python_14-绘图

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  3. mysql导入导出文本文件

    MySQL导入出文本文件只能到处数据,不能到处结构,不过也算备份数据一种方法. 导入文本文件 在此像导入csv文件 也是类似 load data local infile 'd:/insert.txt ...

  4. 如何获取.properties配置文件

    如何获取.properties配置文件 分析思路: 先使用流和文件关联,即读取文件 再读取文件内容,一行一行读取 字符分割“=”  键值对 然后把键值对放到集合中去 但是Properties类里面有方 ...

  5. 如何偷Android的内存-Tricking Android MemoryFile

    之前在做一个内存优化的时候,使用到了MemoryFile,由此发现了MemoryFile的一些特性以及一个非常trickly的使用方法,因此在这里记录一下 What is it MemoryFile是 ...

  6. 现代C++学习笔记之二入门篇2,数据转换

    static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换, ...

  7. (回文串)leetcode各种回文串问题

    题目一:最长连续回文子串. 问题分析:回文串顾名思义表示前后读起来都是一样,这里面又是需要连续的.分析这个问题的结构,可以想到多种方法.暴力解决的方式,2层循环遍历得出各个子串,然后再去判断该子串是否 ...

  8. javascript总结11:JavaScript的自增自减

    1 自增自减 1.1 自增写法i++ 作用:在不参与运算的情况下,i++和++i都是在变量的基础加1 var n1 =123; //n1++ 等价于 n1 = n1 +1; ++n1 //等价于 n1 ...

  9. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(3):常用动态代理之JDK动态代理、CGLIB动态代理

    一.动态代理的理解 动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问.        先来谈谈什么是代理模式.        假设这样一个场景:你的公司是一家软件 ...

  10. 【Andoid学习】GridView学习

    简介 一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联.比如实现九宫格图,用GridView是首选,也是最简单的. 属性:android:co ...