graceful exit

This commit is contained in:
jxxghp 2023-06-08 08:20:19 +08:00
parent 856f931307
commit 46b5f3ba3b
2 changed files with 24 additions and 3 deletions

View File

@ -1,5 +1,11 @@
import os
import signal
import sys
from typing import Any
import uvicorn as uvicorn import uvicorn as uvicorn
from fastapi import FastAPI from fastapi import FastAPI
from uvicorn import Config
from app.api.apiv1 import api_router from app.api.apiv1 import api_router
from app.core import settings, ModuleManager, PluginManager from app.core import settings, ModuleManager, PluginManager
@ -14,6 +20,9 @@ App = FastAPI(title=settings.PROJECT_NAME,
# API路由 # API路由
App.include_router(api_router, prefix=settings.API_V1_STR) App.include_router(api_router, prefix=settings.API_V1_STR)
# uvicorn服务
server = uvicorn.Server(Config(App, host=settings.HOST, port=settings.PORT, reload=False))
@App.on_event("shutdown") @App.on_event("shutdown")
def shutdown_server(): def shutdown_server():
@ -23,6 +32,7 @@ def shutdown_server():
Scheduler().stop() Scheduler().stop()
@App.on_event("startup")
def start_module(): def start_module():
""" """
启动模块 启动模块
@ -37,12 +47,22 @@ def start_module():
Scheduler() Scheduler()
def graceful_exit(signum: Any, frame: Any):
"""
优雅退出
"""
if server is not None:
server.should_exit = True
# 注册退出信号处理函数
signal.signal(signal.SIGINT, graceful_exit)
signal.signal(signal.SIGTERM, graceful_exit)
if __name__ == '__main__': if __name__ == '__main__':
# 初始化数据库 # 初始化数据库
init_db() init_db()
# 更新数据库 # 更新数据库
update_db() update_db()
# 启动模块
start_module()
# 启动服务 # 启动服务
uvicorn.run('main:App', host=settings.HOST, port=settings.PORT, reload=False) server.run()

View File

@ -21,6 +21,7 @@ class Subscribe(BaseModel):
start_episode: Optional[int] start_episode: Optional[int]
lack_episode: Optional[int] lack_episode: Optional[int]
note: Optional[str] note: Optional[str]
state: str
class Config: class Config:
orm_mode = True orm_mode = True