feat: 持久化和 web 接口基础架构

This commit is contained in:
RockChinQ
2024-10-11 22:27:53 +08:00
parent 21f153e5c3
commit 7c3557e943
26 changed files with 462 additions and 22 deletions

View File

@@ -0,0 +1,48 @@
from __future__ import annotations
import asyncio
import quart
from ....core import app
from .groups import log
from . import group
class HTTPController:
ap: app.Application
quart_app: quart.Quart
def __init__(self, ap: app.Application) -> None:
self.ap = ap
self.quart_app = quart.Quart(__name__)
async def initialize(self) -> None:
await self.register_routes()
async def run(self) -> None:
if self.ap.system_cfg.data['http-api']['enable']:
async def shutdown_trigger_placeholder():
while True:
await asyncio.sleep(1)
asyncio.create_task(self.quart_app.run_task(
host=self.ap.system_cfg.data['http-api']['host'],
port=self.ap.system_cfg.data['http-api']['port'],
shutdown_trigger=shutdown_trigger_placeholder
))
async def register_routes(self) -> None:
@self.quart_app.route('/healthz')
async def healthz():
return {
"code": 0,
"msg": "ok"
}
for g in group.preregistered_groups:
ginst = g(self.ap, self.quart_app)
await ginst.initialize()