Files
AskaEth e6875f0b4b Initial commit: SenSu Alpha 0.2.0
- 13-service async plugin framework
- Textual TUI with CLI fallback
- Plugin hot-reload + permission system
- Web management panel (aiohttp)
- Bridge-based inter-module communication
- 10 regression tests

Fixes applied:
- PBKDF2-SHA256 auth (was plain SHA256)
- Auth bypass removed (was allow-all on fail)
- Bare excepts replaced with logged errors
- CatFramework/DreamSu -> SenSu naming unified
- ServiceManager: health checks + startup_order
- Env var credentials (SENSU_ADMIN_PASSWORD etc)
2026-06-10 12:28:05 +08:00

52 lines
1.7 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
logger = logging.getLogger(__name__)
class ServiceManager:
"""服务管理器"""
def __init__(self):
self.services = {}
# 记录框架启动时间
self.start_time = time.time()
logger.debug("ServiceManager初始化完成")
def register_service(self, name: str, service_instance):
"""注册服务"""
try:
if name in self.services:
logger.warning(f"服务 {name} 已存在,将被覆盖")
self.services[name] = service_instance
logger.debug(f"服务 {name} 注册成功")
except Exception as e:
logger.error(f"注册服务 {name} 时出错: {str(e)}", exc_info=True)
raise
def get_service(self, name: str):
"""获取服务"""
try:
service = self.services.get(name)
if not service:
logger.error(f"服务 {name} 不存在")
raise ValueError(f"服务 {name} 未找到")
logger.debug(f"成功获取服务 {name}")
return service
except Exception as e:
logger.error(f"获取服务 {name} 时出错: {str(e)}", exc_info=True)
raise
def shutdown_all(self):
"""关闭所有服务"""
logger.info("开始关闭所有服务")
for name, service in self.services.items():
try:
if hasattr(service, 'shutdown'):
service.shutdown()
logger.debug(f"服务 {name} 关闭成功")
except Exception as e:
logger.error(f"关闭服务 {name} 时出错: {str(e)}", exc_info=True)
logger.info("所有服务关闭完成")