1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import os
- from contextlib import asynccontextmanager
- from fastapi import FastAPI
- import asyncio
- from udp_server import start_udp_server
- from api import router
- import uvicorn
- import configparser
- import logging
- from fastapi.responses import HTMLResponse
- from fastapi.templating import Jinja2Templates
- from fastapi import Request
- os.makedirs("logs",exist_ok=True)
- logging.basicConfig(
- filename="logs/server.log",
- level=logging.INFO,
- format="%(asctime)s [%(levelname)s] %(message)s"
- )
- # @app.on_event("startup")
- # async def startup_event():
- # asyncio.create_task(start_tcp_server("0.0.0.0", 9000))
- # 读取配置
- config = configparser.ConfigParser()
- config.read("config.ini", encoding="utf-8")
- http_port = int(config["server"].get("http_port", 8000))
- udp_port = int(config["server"].get("udp_port", 8886))
- tcp_port = int(config["server"].get("tcp_port", 9000))
- @asynccontextmanager
- async def lifespan(app: FastAPI):
- # 程序启动时运行
- #tcp_task = asyncio.create_task(start_tcp_server("0.0.0.0", 9000))
- #udp_task = asyncio.create_task(start_udp_server("0.0.0.0",8886))
- udp_task = asyncio.create_task(start_udp_server("0.0.0.0", udp_port))
- yield # 这里暂停,直到程序退出
- # 程序关闭时运行(清理任务)
- #tcp_task.cancel()
- udp_task.cancel()
- # try:
- # await tcp_task
- # except asyncio.CancelledError:
- # pass
- try:
- await udp_task
- except asyncio.CancelledError:
- pass
- app = FastAPI(lifespan=lifespan) # 这里绑定 lifespan
- app.include_router(router)
- templates = Jinja2Templates(directory="templates")
- @app.get("/", response_class=HTMLResponse)
- async def read_root(request: Request):
- return templates.TemplateResponse("index.html", {"request": request})
- if __name__ == "__main__":
- uvicorn.run(app, host="0.0.0.0", port=8000)
- #uvicorn.run("main:app", host="0.0.0.0", port=8000) #, reload=True)
|