Tornado-Lesson01-安装、路由,输入和输出

一、Tornado

    Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。

  得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。
 

二、安装和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))
      否则会报错

 

posted @ 2018-02-08 03:15  17-王晶龙-58  阅读(289)  评论(0编辑  收藏  举报