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