72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
from contextlib import asynccontextmanager
|
|
|
|
import uvicorn
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from tortoise.contrib.fastapi import register_tortoise
|
|
|
|
import app.utils.audio_init
|
|
from app.api.admin.router import admin_router
|
|
from app.api.ai_assist.routes import ai_router
|
|
from app.api.article_director.routes import article_router
|
|
from app.api.make_comments.routes import comment_router
|
|
from app.api.pronounciation_test.routes import pron_test_router
|
|
from app.api.redis_test import redis_test_router
|
|
from app.api.search_dict.routes import dict_search
|
|
from app.api.translator import translator_router
|
|
from app.api.user.routes import users_router
|
|
from app.api.word_comment.routes import word_comment_router
|
|
from app.core.redis import init_redis, close_redis
|
|
from app.utils.phone_encrypt import PhoneEncrypt
|
|
from settings import ONLINE_SETTINGS
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
# ---- startup ----
|
|
app.state.redis = await init_redis()
|
|
# phone_encrypt
|
|
app.state.phone_encrypto = PhoneEncrypt.from_env() # 接口中通过 Request 访问
|
|
try:
|
|
yield
|
|
finally:
|
|
await close_redis()
|
|
|
|
|
|
app = FastAPI(lifespan=lifespan)
|
|
|
|
# 添加CORS中间件
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
register_tortoise(
|
|
app=app,
|
|
config=ONLINE_SETTINGS,
|
|
)
|
|
|
|
app.include_router(users_router, tags=["User API"], prefix="/users")
|
|
app.include_router(admin_router, tags=["Administrator API"], prefix="/admin")
|
|
app.include_router(dict_search, tags=["Dictionary Search API"])
|
|
|
|
app.include_router(redis_test_router, tags=["Redis Test-Only API"])
|
|
|
|
app.include_router(translator_router, tags=["Translation API"])
|
|
|
|
app.include_router(ai_router, tags=["AI Assist API"], prefix="/ai_assist")
|
|
|
|
app.include_router(comment_router, tags=["Comment API"])
|
|
|
|
app.include_router(word_comment_router, tags=["Word Comment API"], prefix="/comment/word")
|
|
|
|
app.include_router(pron_test_router, tags=["Pron Test API"], prefix="/test/pron")
|
|
|
|
app.include_router(article_router, tags=["Article API"])
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
|