feat: EDC 服务 — Python/uvloop 实现,UDP/TCP 异步网络服务

This commit is contained in:
wangfq
2026-05-27 10:23:15 +08:00
commit a10d176f68
11 changed files with 1076 additions and 0 deletions

75
README.md Normal file
View File

@@ -0,0 +1,75 @@
# EDC 服务 (Edge Data Center)
测试工装边缘数据中心 — Python 实现,基于 uvloop 的高性能异步网络服务。
## 系统架构
```
TCP/UDP ┌─────────────────────────────────────┐
◄─────────────► │ EDC 服务 │
│ │
UDP :5500 ───► │ 设备发现 / 心跳 / 信息查询 │
UDP :5505 ───► │ 消息监听 │
TCP :5550 ───► │ 时间同步 / 数据上报 / 串口透传 │
│ │
│ 后台解析服务 ──► DG430 协议 → MySQL │
└─────────────────────────────────────┘
```
## 快速开始
```bash
# 安装依赖
pip install -r requirements.txt
# 设置环境变量
export EDC_MYSQL_HOST=127.0.0.1
export EDC_MYSQL_USER=root
export EDC_MYSQL_PASSWORD=your_password
export EDC_MYSQL_DB=edc
# 确保数据库已创建
mysql -u root -e "CREATE DATABASE IF NOT EXISTS edc CHARACTER SET utf8mb4"
# 启动
python run.py
```
## 配置
所有配置通过环境变量,见 `src/config.py`
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `EDC_UDP_PORT` | 5500 | UDP 设备发现端口 |
| `EDC_UDP_MSG_PORT` | 5505 | UDP 消息监听端口 |
| `EDC_TCP_PORT` | 5550 | TCP 数据上报端口 |
| `EDC_BIND_HOST` | 0.0.0.0 | 绑定地址 |
| `EDC_MYSQL_HOST` | 127.0.0.1 | MySQL 地址 |
| `EDC_MYSQL_PORT` | 3306 | MySQL 端口 |
| `EDC_MYSQL_USER` | root | 数据库用户 |
| `EDC_MYSQL_PASSWORD` | — | 数据库密码 |
| `EDC_MYSQL_DB` | edc | 数据库名 |
| `EDC_PARSE_POLL_INTERVAL` | 0.5 | 解析轮询间隔(秒) |
| `EDC_LOG_LEVEL` | INFO | 日志级别 |
## 协议参考
- [DG430 串口协议](../vd_test_fixture/docs/DG430串口协议.md)
- [PGLC 网络接口协议](../vd_test_fixture/docs/PGLC网络接口协议.md)
- [EDC 服务设计](../vd_test_fixture/docs/EDC服务.md)
## 目录结构
```
edc_server/
├── run.py # 入口
├── requirements.txt # uvloop, aiomysql
└── src/
├── config.py # 环境变量配置
├── models.py # MySQL 连接池 + 表结构 + CRUD
├── protocol.py # PGLC JSON 协议解析
├── dg430.py # DG430 二进制协议解析
├── handlers.py # 业务处理 + 后台解析服务
└── server.py # UDP/TCP 异步服务主程序
```