zoukankan      html  css  js  c++  java
  • Tornado项目基本架构

    项目模块基本架构如下:

      

    -------------application.py
    import tornado.web
    
    from views import index, login
    import config
    
    
    class Application(tornado.web.Application):
        def __init__(self):
            handlers = [
                (r"/", index.IndexHandler),
                (r"/sunck", index.SunckHandler, {"word1": "good", "word2": "nice"}),
                (r"/login", login.LoginHandler),
                (r"/json", index.JsonHandler),
                (r"/json2", index.JsonsHandler)
    
            ]
    
            super(Application, self).__init__(handlers, **config.settings)
            print(config.settings)
            # super(Application, self).__init__(handlers, autoreload=True)
    
    
    -------------config.py
    import os
    
    # 获取当前目录下的根目录
    BASE_DIR = os.path.dirname(__file__)
    
    # 参数
    options = {
        "port": 8000,
    
    }
    
    IMAGES_PATH = "./image/test"
    # 配置
    settings = {
    
        "static_path": os.path.join(BASE_DIR, "static"),
        "template_path": os.path.join(BASE_DIR, "templates"),
    
        # debug为True是调试模式,如果为False的是生产模式 和Django这点相同
        "debug": True,
    
        # 为True的特性:
        # 取消缓存编译的模板  compiled_template_cache = False
        # 取消缓存静态文件的hash值  static_hash_cache = False
        # 提供追踪信息  serve_traceback = True
        # 自动重启 autoreload=True
    
        # self.redirect  重定向
        # self.send_error(state_code=500)
        # self.write_error(state_code=500)
        # self.reverse_url()  反向解析
    
        # tornado.web.RequestHandler
          # 利用http协议向服务端传递参数
            # 提取url特定参数,get/post传递参数,既可以获取get请求也可以获取post请求,在http的报文头中增加自定义的参数
            # self.get_query_argument()  获取get请求时url中的参数
            # self.get_query_arguments()  获取get请求时url中的参数两个以上同名的返回值为一个list
          # request对象
          # tornado.httputil.HTTPFile对象
    }
    
    print("当前的根目录为")
    print(BASE_DIR)
    print("当前静态文件存储路径为")
    print(settings["static_path"])
    print("当前模板文件的存储路径为")
    print(settings["template_path"])
    
    
    -------------server.py
    import tornado.web
    
    import tornado.ioloop
    import tornado.httpserver
    
    import config
    from views import index
    from application import Application
    
    app = Application()
    
    
    if __name__ == '__main__':
        # 创建服务
        # app.listen(8080)
        # app.listen(config.options['port'])
    
        # 自己创建一个服务
        httpServer = tornado.httpserver.HTTPServer(app)
        # 给该服务绑定一个端口
        httpServer.bind(config.options['port'])
        # 开启一个进程
        httpServer.start(1)
        # 启动服务,并监听
        tornado.ioloop.IOLoop.current().start()
  • 相关阅读:
    系统可用性
    如何在代码层实现可测试性-以《热词分析》代码为例
    python爬虫(五) ProxyHandler处理器
    python爬虫(二) urlparse和urlsplit函数
    以《淘宝网》为例,描绘质量属性的六个常见属性
    python爬虫(一)
    软件架构师如何工作
    学习进度-17 架构
    Linux中MySQL5.6编译安装与MySQL5.7二进制安装步骤
    Linux Rsync备份服务介绍及部署守护进程模式
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/10932985.html
Copyright © 2011-2022 走看看