Files
AstrBot/astrbot/dashboard/routes/log.py
T
2025-03-03 13:30:55 +08:00

29 lines
879 B
Python

import asyncio
from quart import websocket
from astrbot.core import logger, LogBroker
from .route import Route, RouteContext
class LogRoute(Route):
def __init__(self, context: RouteContext, log_broker: LogBroker) -> None:
super().__init__(context)
self.log_broker = log_broker
self.app.add_url_rule(
"/api/live-log", view_func=self.log, methods=["GET"], websocket=True
)
async def log(self):
queue = None
try:
queue = self.log_broker.register()
while True:
message = await queue.get()
await websocket.send(message)
except asyncio.CancelledError:
pass
except BaseException as e:
logger.error(f"WebSocket 连接错误: {e}")
finally:
if queue:
self.log_broker.unregister(queue)