# fastapi插件系统 **Repository Path**: yajie957461674/fastapi-plugin-system-f ## Basic Information - **Project Name**: fastapi插件系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-06-21 - **Last Updated**: 2025-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastAPI插件系统 一个基于FastAPI构建的现代化、可扩展的插件管理系统,支持动态加载、卸载和热重载插件。 ## 🚀 特性 - **动态插件管理**: 支持插件的动态加载、卸载和热重载 - **现代化UI**: 基于Tailwind CSS的美观Web界面 - **RESTful API**: 完整的插件管理API接口 - **插件生命周期**: 完整的插件初始化、启动、停止流程 - **配置管理**: 支持插件配置的动态更新 - **实时监控**: 系统状态和插件运行情况的实时监控 - **响应式设计**: 支持桌面和移动设备 ## 📋 系统要求 - Python 3.8+ - FastAPI - Uvicorn - 其他依赖见 `requirements.txt` ## 🛠️ 安装 1. 克隆项目 ```bash cd fast_api_pl ``` 2. 安装依赖 ```bash pip install -r requirements.txt ``` 3. 运行应用 ```bash python main.py ``` 或者使用uvicorn直接运行: ```bash uvicorn main:app --host 0.0.0.0 --port 8000 --reload ``` ## 🌐 访问地址 - **主页**: http://localhost:8000/ - **插件管理**: http://localhost:8000/plugins - **仪表板**: http://localhost:8000/dashboard - **API文档**: http://localhost:8000/docs - **ReDoc文档**: http://localhost:8000/redoc ## 📁 项目结构 ``` fast_api_pl/ ├── main.py # 主应用入口 ├── requirements.txt # 项目依赖 ├── README.md # 项目文档 ├── plugin_system/ # 插件系统核心 │ ├── __init__.py │ ├── base.py # 插件基类定义 │ ├── plugin_manager.py # 插件管理器 │ └── routes.py # API路由 ├── plugins/ # 插件目录 │ ├── __init__.py │ ├── hello_world.py # Hello World示例插件 │ └── calculator.py # 计算器示例插件 ├── templates/ # HTML模板 │ ├── base.html # 基础模板 │ ├── index.html # 主页 │ ├── plugins.html # 插件管理页面 │ └── dashboard.html # 仪表板页面 └── static/ # 静态文件 └── css/ └── custom.css # 自定义样式 ``` ## 🔌 插件开发 ### 插件基类 所有插件都必须继承 `BasePlugin` 类并实现以下方法: ```python from plugin_system.base import BasePlugin, PluginInfo, PluginConfig from datetime import datetime class MyPlugin(BasePlugin): def get_info(self) -> PluginInfo: return PluginInfo( name="my_plugin", version="1.0.0", description="我的插件描述", author="作者名", dependencies=[], tags=["example"], created_at=datetime.now(), updated_at=datetime.now() ) def initialize(self) -> bool: # 插件初始化逻辑 return True def start(self) -> bool: # 插件启动逻辑 return True def stop(self) -> bool: # 插件停止逻辑 return True def get_routes(self) -> List[Dict[str, Any]]: # 返回插件提供的路由信息 return [] ``` ### 插件配置 插件可以定义自己的配置: ```python def initialize(self) -> bool: self.config = PluginConfig( enabled=True, settings={ "api_key": "your_api_key", "timeout": 30 }, auto_start=True ) return True ``` ### 插件路由 插件可以提供自己的API端点: ```python from fastapi import APIRouter class MyPlugin(BasePlugin): def __init__(self): super().__init__() self.router = APIRouter(prefix="/my_plugin", tags=["my_plugin"]) self._setup_routes() def _setup_routes(self): @self.router.get("/") async def my_endpoint(): return {"message": "Hello from my plugin!"} ``` ## 📡 API接口 ### 插件管理API - `GET /api/plugins/` - 获取所有插件 - `GET /api/plugins/active` - 获取活跃插件 - `GET /api/plugins/{plugin_name}` - 获取指定插件信息 - `POST /api/plugins/{plugin_name}/start` - 启动插件 - `POST /api/plugins/{plugin_name}/stop` - 停止插件 - `POST /api/plugins/{plugin_name}/reload` - 重新加载插件 - `PUT /api/plugins/{plugin_name}/config` - 更新插件配置 - `DELETE /api/plugins/{plugin_name}` - 卸载插件 - `GET /api/plugins/{plugin_name}/routes` - 获取插件路由 ### 示例插件API #### Hello World插件 - `GET /hello` - 获取Hello World消息 - `GET /hello/{name}` - 获取个性化Hello消息 #### 计算器插件 - `POST /calculator/add` - 加法运算 - `POST /calculator/subtract` - 减法运算 - `POST /calculator/multiply` - 乘法运算 - `POST /calculator/divide` - 除法运算 - `POST /calculator/calculate` - 通用计算接口 ## 🎨 界面功能 ### 主页 - 系统概览和快速操作 - 功能特性介绍 - 技术栈说明 ### 插件管理 - 插件列表展示 - 插件状态管理(启动/停止/重载/卸载) - 插件详情查看 - 插件配置管理 - 统计信息展示 ### 仪表板 - 系统状态监控 - 活跃插件展示 - 性能指标统计 - 最近活动记录 ## 🔧 配置 ### 插件目录配置 默认插件目录为 `plugins/`,可以在 `PluginManager` 初始化时指定: ```python plugin_manager = PluginManager(plugins_dir="custom_plugins") ``` ### 插件自动启动 插件可以通过配置实现自动启动: ```python config = PluginConfig( enabled=True, auto_start=True # 系统启动时自动启动插件 ) ``` ## 🚀 部署 ### 生产环境部署 1. 使用Gunicorn部署: ```bash pip install gunicorn gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker ``` 2. 使用Docker部署: ```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] ``` ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个项目! ## 📄 许可证 本项目采用MIT许可证。 ## 🙏 致谢 - [FastAPI](https://fastapi.tiangolo.com/) - 现代Python Web框架 - [Tailwind CSS](https://tailwindcss.com/) - 实用优先的CSS框架 - [Font Awesome](https://fontawesome.com/) - 图标库