• tornado基本使用一


    一、tornado web程序编写思路

    1. 创建web应用实例对象,第一个初始化参数为路由映射列表
    2. 定义实现路由映射列表中的handler类
    3. 创建服务器实例, 绑定服务器端口
    4. 启动当前线程的IOLoop

    二、tornado.web

    1.RequestHandler:
    封装了对应一个请求的所有信息和方法,write(响应信息)就是写响应信息的一个方法;对应每一种http请求方式(get、post等),把对应的处理逻辑写进同名的函数名方法里面(如对应get请求方式,就将对应的处理逻辑写在get()方法中),当没有对应请求方式的成员方法时,会返回“405: Method Not Allowed”错误。

    2.Application:

    tarnado web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表;其listen(端口)方法用来创建一个http服务器实例,并绑定到给的端口(注意:此时服务器并未开启监听)

    3.tornado.ioloop

    (1)tornado的核心io循环模块,封装了linux的epoll和BSD的kqueue,tornado高性能的基石

    (2)epoll原理

    (3)IOLoop.current():   返回当前线程的IOLoop实例。

    (4)IOLoop.start(): 启动IOLoop实例的IO循环,同时服务器监听被打开。

    4.tornado.httpserver

    实例:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Irving
    
    # 一个简单的tornado web
    
    # 引用对应的tornado包
    from tornado.web import Application, RequestHandler
    from tornado.ioloop import IOLoop
    from tornado.httpserver import HTTPServer
    
    
    class IndexHandler(RequestHandler):
        def get(self):
            self.write("hello world!")
            
    if __name__ == '__main__':
        # 创建一个app应用
        app = Application([('/', IndexHandler)])
        
        # applisten('8000')
        # 为应用创建一个http服务
        http_server = HTTPServer(app)
        
        # 绑定对应的端口号
        http_server.listen(8000)
        
        # 开启多个tornado进程
        # http_server.bind(8000)
        # http_server.start(4)
        
        IOLoop.current().start()

    5.tornado.options 

    (1)tornado.options模块 -- 全局参数定义、存储、转换

    (2)tornado.options.define()

      1. def define(name, default=None, type=None, help=None, metavar=None, multiple=False, group=None,  callback=None)

      2. name 选项变量名,须保证全局唯一性,否则会报“Option 'xxx' already defined in ...”的错误

      3. default 选项变量的默认值,如不传默认为None

      4. type 选项变量的类型,转换不成功时会报错,可以是str、float、int、datetime、timedelta中的某个,若未设置则根据default的值自动推断,若default也未设置,那么不再进行转换。可以通过利用设置type类型字段来过滤不正确的输入。

      5. multiple 选项变量的值是否可以为多个,布尔类型,默认值为False,如果multiple为True,那么设置选项变量时值与值之间用英文逗号分隔,而选项变量则是一个list列表(若默认值和输入均未设置,则为空列表[])。

      6. help 选项变量的帮助提示信息,在命令行启动tornado时,--help 可以查看所有选项变量的信息(注意,代码中需要加入tornado.options.parse_command_line())。

    (3)tornado.options.options
      全局options对象,所有定义的选项变量都会作为该对象的属性

    (4)tornado.options.parse_command_line()

      进行初始化

    (5)tornado.options.parse_config_file(path)

    (5)实例

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:Irving
    
    # 一个简单的tornado web
    
    # 引用对应的tornado包
    from tornado.web import Application, RequestHandler
    from tornado.ioloop import IOLoop
    from tornado.httpserver import HTTPServer
    import tornado.options
    
    
    tornado.options.define("port", type=int, default=8000, help="端口号")
    
    class IndexHandler(RequestHandler):
        def get(self):
            self.write("hello world!")
    
    if __name__ == '__main__':
        tornado.options.parse_command_line()
    
        # 创建一个app应用
        app = Application([('/', IndexHandler)])
    
        # applisten('8000')
        # 为应用创建一个http服务
        http_server = HTTPServer(app)
    
        # 绑定对应的端口号
        http_server.listen(tornado.options.options.port)
    
        # 开启多个tornado进程
        # http_server.bind(8000)
        # http_server.start(4)
    
        IOLoop.current().start()
  • 相关阅读:
    能者摹形 大师窃意
    Nginx负载均衡的详细配置及使用案例详解.
    Zookeeper 4、Zookeeper开发
    nginx负载均衡
    Git:husky > npm run s precommit
    关于数据库路径 DataDirectory
    关于在VS2010 ASP.NET MVC3中使用WebService的实例
    SQLite的SQL语法
    获取IE可见高度和内容高度 记录
    转文:ASP.NET运行机制原理
  • 原文地址:https://www.cnblogs.com/Xuuuuuu/p/11173569.html
Copyright © 2020-2023  润新知