tornado 01 路由、输入与输出

一、安装tornado

[email protected]:~$ workon py3env #安装python3的虚拟环境
(py3env) [email protected]:~$ 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()

原文地址:https://www.cnblogs.com/xuchengcheng1215/p/8933002.html

时间: 2024-10-02 07:32:30

tornado 01 路由、输入与输出的相关文章

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

ACM竞赛之输入输出以下内容来源于互联网.在ACM程序设计竞赛中,一道题目的所有测试数据是放在一个文本文件中,选手将一道题目的程序提交给评判系统运行,程序从该文件中读取测试数据,再把运行结果输出到另一个文本文件中.系统把输出文件与标准答案比对,来评判程序编写得正确与否.ACM现场赛采用的输入输出形式有(1)文件输入.标准输出:(2)文件输入.文件输出:(3)标准的输入输出.而Web形式的ACM程序设计在线评判系统一般采用标准的输入输出,但输入结束有文件末尾标识(EOF),这可以用于确定输入结束.

编程挑战系统的输入和输出详细说明

在高校俱乐部线上编程挑战中,一道题目的所有测试数据是放在一个文本文件中,选手将一道题目的程序提交给评判系统运行,程序从该文件中读取测试数据,再把运行结果输出到另一个文本文件中.系统把输出文件与标准答案比对,来评判程序编写得正确与否. 本系统采用标准的输入输出,输入结束有文件末尾标识(EOF),这可以用于确定输入结束. 一.四种基本输入形式 1.      一组输入数据 示例:整数求和 描述 给定两个整数,求它们之和. 输入 两个整数A,B. 输出 两个整数的和. 样例输入 1 2 样例输出 3

Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化

Python入门(二)--IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化 我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说那么的被动,我学习的是Python2.7,虽然现在随着版本的迁移至Python3,但是这个并不会对我们造成什么困扰,毕竟只是一个适应阶段 我们的学习资料:廖雪峰官方网站Python2.7教程 一.IDE选择PyCharm 我们虽然在前面一章已经配置过,但是我们还是有很多的IDE可以开发Py,比如su

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

Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. write. gets. puts. readline. getc 和 printf. 本章节将讲解所有 Ruby 中可用的基础的 I/O 函数.如需了解更多的函数,请查看 Ruby 的 IO 类. puts 语句 在前面的章节中,您赋值给变量,然后使用 puts 语句打印输出. puts 语句指示程序

python入门(6)输入和输出

输出 >>> print 'hello, world' >>> print 'The quick brown fox', 'jumps over', 'the lazy dog' print会依次打印每个字符串,遇到逗号","会输出一个空格,因此,输出的字符串是这样拼起来的: >>> print 300 300 >>> print 100 + 200 300 因此,我们可以把计算100 + 200的结果打印得更漂亮

C++的输入和输出

C++是一种常用的编程语言.一个完整的程序至少要有一个输出,而我们也经常需要在程序内进行大量输入和输出.所以今天,我和大家谈一谈输入和输出. 1.cin和cout.可以连续输入,使用流(>>).有专门的输出的换行"endl". cin>>a>>b; cout<<"asdasdasd"<<endl; 2.scanf和printf.scanf和printf虽然需要占位符,不是很方便,而且容易因为系统影响在评测时

调用 get(fgetc) 和 putc(fputc) 函数进行输入、输出

当成功地打开文件后,接下来的事情就是对文件进行输入或输出操作,最简单的是调用 getc(或 fgetc) 和 putc(或 fputc) 函数进行字符的输入和输出. 1.调用 putc(或 fpuct) 函数输出一个字符 putc 函数的调用形式如下: putc(ch, fp); 这里 ch 是待输出的某个字符,它可以是一个字符常量,也可以是一个字符变量:fp 是文件指针.putc(ch, fp) 的功能是将字符 ch 写到文件指针 fp 所指的文件中去.如果输出成功,putc 函数返回所输出的

CString中Format函数与格式输入与输出

CString中Format函数与格式输入与输出 Format是一个很常用,却又似乎很烦的方法,以下是它的完整概貌,以供大家查询之用: 格式化字符串forma("%d",12)意思是将一个整形的格式化的字符(我认为是保持其形状不变) 1).格式说明总是以%字符开始,以下是不同类型数据的格式方式%号后的说明: d输出带符号十进制数 o输出无符号八进制数 x输出无符号十六进制数 u输出无符号数 c输出单个字符 s输出一串字符 f输出实数(6位小数) e以指数形式输出实数 g选用f与e格式中

c++文件输入输出流fstream,对输入&gt;&gt;和输出&lt;&lt;重载

1. fstream 继承自iostream --> 要包含头文件#include<fstream> 2. 建立文件流对象 3. 打开文件夹 4. 测试是否打开成功 5. 进行读写操作 6. 关闭文件 #include<iostream> #include<fstream> using namespace std; int main(){ ifstream ifile; ofstream ofile; ifile.open("d:\\fileIn.txt