Tornado Application的实现

 更新时间:2023年05月16日 09:40:16   作者:G_SANGSK  
本文主要介绍了Tornado Application的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Application

-settings

我们在创建tornado.web.Application的对象时,传入了第一个参数——路由映射列表。实际上Application类的构造函数还接收很多关于tornado web应用的配置参数。

我们先来看一个参数:

debug,设置tornado是否工作在调试模式,默认为False即工作在生产模式。当设置debug=True 后,tornado会工作在调试/开发模式,在此种模式下,tornado为方便我们开发而提供了几种特性:

  • 自动重启,tornado应用会监控我们的源代码文件,当有改动保存后便会重启程序,这可以减少我们手动重启程序的次数。需要注意的是,一旦我们保存的更改有错误,自动重启会导致程序报错而退出,从而需要我们保存修正错误后手动启动程序。这一特性也可单独通过autoreload=True设置;
  • 取消缓存编译的模板,可以单独通过compiled_template_cache=False来设置;
  • 取消缓存静态文件hash值,可以单独通过static_hash_cache=False来设置;
  • 提供追踪信息,当RequestHandler或者其子类抛出一个异常而未被捕获后,会生成一个包含追踪信息的页面,可以单独通过serve_traceback=True来设置。

使用debug参数的方法:

import tornado.web
app = tornado.web.Application([], debug=True)

-路由映射

先前我们在构建路由映射列表的时候,使用的是二元元组,如:

[(r"/", IndexHandler),]

对于这个映射列表中的路由,实际上还可以传入多个信息,如:

[
    (r"/", Indexhandler),
    (r"/cpp", ItcastHandler, {"subject":"c++"}),
    url(r"/python", ItcastHandler, {"subject":"python"}, name="python_url")
]

对于路由中的字典,会传入到对应的RequestHandler的initialize()方法中:

from tornado.web import RequestHandler
class ItcastHandler(RequestHandler):
    def initialize(self, subject):
        self.subject = subject
    def get(self):
        self.write(self.subject)

对于路由中的name字段,注意此时不能再使用元组,而应使用tornado.web.url来构建。name是给该路由起一个名字,可以通过调用RequestHandler.reverse_url(name)来获取该名子对应的url。

# coding:utf-8
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options
from tornado.options import options, define
from tornado.web import url, RequestHandler
define("port", default=8000, type=int, help="run server on the given port.")
class IndexHandler(RequestHandler):
    def get(self):
        python_url = self.reverse_url("python_url")
        self.write('<a href="%s" rel="external nofollow" >itcast</a>' %
                   python_url)
class ItcastHandler(RequestHandler):
    def initialize(self, subject):
        self.subject = subject
    def get(self):
        self.write(self.subject)
if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application([
            (r"/", Indexhandler),
            (r"/cpp", ItcastHandler, {"subject":"c++"}),
            url(r"/python", ItcastHandler, {"subject":"python"}, name="python_url")
        ],
        debug = True)
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.current().start()

到此这篇关于Tornado Application的实现的文章就介绍到这了,更多相关Tornado Application内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文带你弄懂Python3中的def __init__

    一文带你弄懂Python3中的def __init__

    说起基础的init函数也是我们的老朋友了,组合函数的要么是理解又一定的难度,要么是操作方法有复杂的地方,小编今天要讲的def __init()__属于第一种,下面这篇文章主要给大家介绍了关于如何通过一文带你弄懂Python3中的def __init__的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python日志模块logging用法

    Python日志模块logging用法

    这篇文章介绍了Python日志模块logging的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python利用Seaborn绘制多标签的混淆矩阵

    Python利用Seaborn绘制多标签的混淆矩阵

    混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。本文将利用Seaborn绘制多标签的混淆矩阵,感兴趣的可以学习一下
    2022-07-07
  • Python构造函数与析构函数超详细分析

    Python构造函数与析构函数超详细分析

    在python之中定义一个类的时候会在类中创建一个名为__init__的函数,这个函数就叫做构造函数。它的作用就是在实例化类的时候去自动的定义一些属性和方法的值,而析构函数恰恰是一个和它相反的函数,这篇文章主要介绍了Python构造函数与析构函数
    2022-11-11
  • Python解析命令行读取参数--argparse模块使用方法

    Python解析命令行读取参数--argparse模块使用方法

    这篇文章主要介绍了Python解析命令行读取参数--argparse模块使用方法,需要的朋友可以参考下
    2018-01-01
  • Python入门之字典的使用教程

    Python入门之字典的使用教程

    Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。本文将为大家详细讲讲字典的使用教程,需要的可以参考一下
    2022-09-09
  • Python创建类的方法及成员访问的相关知识总结

    Python创建类的方法及成员访问的相关知识总结

    今天给大家带来的是关于Python基础的相关知识,文章围绕着Python类的方法及成员访问展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 使用Python进行二进制文件读写的简单方法(推荐)

    使用Python进行二进制文件读写的简单方法(推荐)

    下面小编就为大家带来一篇使用Python进行二进制文件读写的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • pycharm中显示CSS提示的知识点总结

    pycharm中显示CSS提示的知识点总结

    在本篇文章里小编给大家整理了关于pycharm中显示CSS提示的知识点内容,需要的朋友们可以参考学习下。
    2019-07-07
  • 对Python 窗体(tkinter)文本编辑器(Text)详解

    对Python 窗体(tkinter)文本编辑器(Text)详解

    今天小编就为大家分享一篇对Python 窗体(tkinter)文本编辑器(Text)详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10

最新评论