<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 服務啟動類詳解 > 首先,我們來看下入口文件引用的庫 ~~~ # ./web.py from vendor import logger # 日志庫 from vendor.framework import App 服務啟動類 import os ~~~ > 日志文件:./vendor/logger.py ~~~ # -*- coding=utf-8 -*- import logging import logging.handlers import time, os ''' 日志模塊 ''' # 定義日志保存的目錄 log_path = ('./runtime/log/%s' % time.strftime('%Y-%m')) if not os.path.exists(log_path): os.makedirs(log_path) filename = ('/%s.log' % time.strftime('%d')) LOG_FILENAME = log_path + filename logger = logging.getLogger('aiohttp.access') def set_logger(): logger.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s') console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) logger.addHandler(console_handler) file_handler = logging.handlers.RotatingFileHandler( LOG_FILENAME, maxBytes=10485760, backupCount=5, encoding="utf-8") file_handler.setFormatter(formatter) logger.addHandler(file_handler) set_logger() ~~~ > 服務啟動基類:./vendor/framework/App.py ~~~ from web import ROOT_PATH import os import asyncio from aiohttp import web from config.config import SYSCONF # 配置文件全局路由 from config import routes # 模板文件配置 import aiohttp_jinja2 from jinja2 import FileSystemLoader # 加載全局中間件 from application.middleware import middlewares class App(object): def __init__(self): self.app = None self.root_path = ROOT_PATH # 獲取根目錄 def get_root_path(self): return self.root_path # 獲取應用目錄 def get_app_path(self): return os.path.join(self.root_path, 'application') def get_loop(self): return asyncio.get_event_loop() def create_app(self): """ @ 創建應用 @ return: Application """ loop = self.get_loop() self.app = web.Application(loop=loop) return self.app def init_templet(self): """ @ 模板文件配置 @ return None """ path = os.path.join(self.root_path, 'templates') aiohttp_jinja2.setup(app=self.app, loader=FileSystemLoader(path)) # 靜態文件 注冊路由 self.app.router.add_static('/static', os.path.join(self.root_path, 'static'), append_version=True) return None def start_server(self): """ @ 啟動服務 @ return:None """ self.create_app() # 加載靜態文件、模板 self.init_templet() # 注冊中間件 self.load_middlewares() # 注冊全局路由 routes.reg_routes(self.app) web.run_app( self.app, host=SYSCONF.get('app').get('app_host'), port=SYSCONF.get('app').get('app_port'), access_log_format='%a %P "%r" %s bs:[%b] rs:[%Tf] "%{Referer}i" "%{User-Agent}i"') return None def load_middlewares(self): """ @ 加載全局中間件, 注冊中間件前,一定要先開啟session @ return:None """ for middle in middlewares: self.app.middlewares.append(middle) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看