fastapi的简单实战,且用uvicorn将日志同时输出到控制台和日志文件中

简单描述

  • fastapi的简单实战,且用uvicorn将日志同时输出到控制台和日志文件中

main.py

import signal
import sys
from contextlib import asynccontextmanager

from fastapi import FastAPI
import uvicorn
from fastapi.staticfiles import StaticFiles

from settings import settings
from routers.xxx import xxx_router
from common.logging import logger


@asynccontextmanager
async def lifespan(app: FastAPI):
    # Code to run on startup
    logger.info("Starting up...")
    # You can initialize resources here (e.g., database connections)

    yield

    # Code to run on shutdown
    logger.info("Shutting down...")
    # Clean up resources here

app = FastAPI(lifespan=lifespan,
              debug=settings.debug,
              title="xxx平台",
              description='xxx',
              version='1.0.0',
              docs_url='/docs',
              redoc_url='/redoc',
              )

app.mount("/static", StaticFiles(directory=settings.static_dir), name="static")

app.include_router(xxx_router, prefix="/api/xxx", tags=["xxx"])


@app.get("/")
def read_root():
    return {
   "data": "welcome to xxx center"}


def signal_handler(sig, frame):
    print(f'Received Ctrl+C! {
     sig} exiting...')
    # 在这里执行任何必要的清理工作
    sys.exit()


def run_http():
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    uvicorn.run(app="main:app", host=settings.server_ip, port=settings.server_port,
                log_config="uvicorn_config.json",
                log_level=settings.log_level, workers=settings.workers)


if __name__ == "__main__":
    run_http()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值