python tornado route 动态路由

# -*- coding: utf-8 -*-

import logging
import logging.handlers

import os
from tornado import ioloop
import tornado
import tornado.httpserver
import tornado.web
from common.settings import log_level, HTTP_PORT, LOGIN_EXPIRE_MINUTE, REDIS_HOST, REDIS_PASSWORD, REDIS_PORT
from serv.urls import app_handlers
from common.dbutils import check_db

__author__ = 'Ennis'


def init_logging():
    """
    日志文件设置
    """
    logger = logging.getLogger()
    logger.setLevel(log_level)

    sh = logging.StreamHandler()
    file_log = logging.handlers.TimedRotatingFileHandler('cnnc_serv.log', 'MIDNIGHT', 1, 10)
    formatter = logging.Formatter(
        '[%(asctime)s] [%(levelname)-7s] [%(module)s:%(filename)s-%(funcName)s-%(lineno)d] %(message)s')
    sh.setFormatter(formatter)
    file_log.setFormatter(formatter)

    logger.addHandler(sh)
    logger.addHandler(file_log)

    logging.info("Current log level is : %s", logging.getLevelName(logger.getEffectiveLevel()))



class Application(tornado.web.Application):
    def __init__(self):
        parent_path = os.path.dirname(__file__)
        # handlers = app_handlers
        settings = dict(
            debug=True,
        )
        session_settings = dict(
            driver="redis",
            driver_settings=dict(
                host=REDIS_HOST,
                port=REDIS_PORT,
                password=REDIS_PASSWORD,
                db=0,
                max_connections=1024,
            ),
            session_lifetime=LOGIN_EXPIRE_MINUTE * 60,
            force_persistence=True,
        )
        settings.update(session=session_settings)
        tornado.web.Application.__init__(self, template_path=os.path.join(parent_path, 'template'),
                                         static_path=os.path.join(parent_path, 'static'), **settings)

    def route(self, url):
        """
        :param url: URL地址
        :return: 注册路由关系对应表的装饰器
        """
        def register(handler):
            """
            :param handler: URL对应的Handler
            :return: Handler
            """
            self.add_handlers(".*$", [(url, handler)])  # URL和Handler对应关系添加到路由表中
            return handler

        return register
app = Application()
@app.route(r'/test')
class MainHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):

        self.write('Hello, 安生')

if __name__ == '__main__':
    try:
        # 日志初始化
        init_logging()
        if check_db() is False:
            exit()
        # 初始化Server
        http_server = tornado.httpserver.HTTPServer(app)
        logging.info("start cnnc sever at port:%s", HTTP_PORT)
        http_server.listen(HTTP_PORT)
        tornado.ioloop.IOLoop.instance().start()

    except Exception as err:
        log_str = 'server start fail! err = %s' % err
        logging.fatal(log_str)


 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值