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()

 

posted @ 2019-05-27 20:31  随性岁分享  阅读(771)  评论(0编辑  收藏  举报