# -*- 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)