diff --git a/VWED任务模块接口文档/地图数据推送接口文档.md b/VWED任务模块接口文档/地图数据推送接口文档.md index 01032b1..0b09d34 100644 --- a/VWED任务模块接口文档/地图数据推送接口文档.md +++ b/VWED任务模块接口文档/地图数据推送接口文档.md @@ -94,53 +94,49 @@ "operate_points": [ { "station_name": "STATION-A-001", - "storage_location_name": "库位A001", "area_name": "一般存储区B", "max_layers": 2, "layers": [ { - "layer_name": "1-1" + "layer_name": "1-1" // 库位名称 }, { - "layer_name": "1-2" + "layer_name": "1-2" // 库位名称 } ] }, { "station_name": "STATION-B-001", - "storage_location_name": "库位B002", "area_name": "一般存储区B", "max_layers": 1, "layers": [ { - "layer_name": "2-1" + "layer_name": "2-1" //库位名称 } ] }, { "station_name": "STATION-B-004", - "storage_location_name": "库位B004", "area_name": "一般存储区C", "max_layers": 3, "layers": [ { - "layer_name": "4-1" + "layer_name": "4-1" //库位名称 }, { - "layer_name": "4-2" + "layer_name": "4-2" // 库位名称 }, { - "layer_name": "4-3" + "layer_name": "4-3"// 库位名称 } ] }, { "station_name": "STATION-B-003", - "storage_location_name": "库位B003", "max_layers": 1, "layers": [ { - "layer_name": "3-1" + "layer_name": "3-1" //库位名称 } ] } diff --git a/VWED任务模块接口文档/库位管理接口文档.md b/VWED任务模块接口文档/库位管理接口文档.md index f9b5eae..dfbf365 100644 --- a/VWED任务模块接口文档/库位管理接口文档.md +++ b/VWED任务模块接口文档/库位管理接口文档.md @@ -31,7 +31,6 @@ | scene_id | string | 否 | 场景ID | | storage_area_id | string | 否 | 库区ID | | station_name | string | 否 | 站点名称(支持模糊搜索) | -| storage_location_name | string | 否 | 库位名称(支持模糊搜索) | | layer_name | string | 否 | 层名称(支持模糊搜索) | | is_disabled | boolean | 否 | 是否禁用 | | is_occupied | boolean | 否 | 是否占用 | @@ -82,7 +81,6 @@ }, "operate_point_id": "637defff-4670-4574-a73e-033bc94941a5", "station_name": "STATION-B-004", - "storage_location_name": "库位B004", "scene_id": "1936411520272753371", "storage_area_id": "df28bb5a-f88f-4825-93e6-a1dae7c34bb1", "storage_area_type": "general", @@ -141,7 +139,6 @@ | ------------------------- | ------- | -------------------------------- | | operate_point_id | string | 动作点ID | | station_name | string | 站点名称 | -| storage_location_name | string | 库位名称 | | scene_id | string | 场景ID | | storage_area_id | string | 库区ID | | storage_area_type | string | 库区类型 | @@ -405,7 +402,6 @@ GET /api/vwed-operate-point/list?scene_id=scene-001&is_occupied=false&page=1&pag "operate_point_info": { "id": "point-001", "station_name": "存储站点A", - "storage_location_name": "A1库位", "scene_id": "scene-001", "area_name": "密集存储区" }, @@ -454,7 +450,6 @@ GET /api/vwed-operate-point/list?scene_id=scene-001&is_occupied=false&page=1&pag | --------------------- | ------ | ------------ | | id | string | 动作点ID | | station_name | string | 站点名称 | -| storage_location_name | string | 库位名称 | | scene_id | string | 场景ID | | area_name | string | 库区名称 | diff --git a/data/models/__pycache__/operate_point.cpython-312.pyc b/data/models/__pycache__/operate_point.cpython-312.pyc index 132e65f..0869d9f 100644 Binary files a/data/models/__pycache__/operate_point.cpython-312.pyc and b/data/models/__pycache__/operate_point.cpython-312.pyc differ diff --git a/data/models/__pycache__/operate_point_layer.cpython-312.pyc b/data/models/__pycache__/operate_point_layer.cpython-312.pyc index b428f00..0ddf58c 100644 Binary files a/data/models/__pycache__/operate_point_layer.cpython-312.pyc and b/data/models/__pycache__/operate_point_layer.cpython-312.pyc differ diff --git a/data/models/operate_point.py b/data/models/operate_point.py index 55bb415..fd8683d 100644 --- a/data/models/operate_point.py +++ b/data/models/operate_point.py @@ -23,7 +23,7 @@ class OperatePoint(BaseModel): id = Column(CHAR(64), primary_key=True, comment='动作点ID') station_name = Column(String(64), nullable=False, comment='动作站点名称') - storage_location_name = Column(String(64), nullable=False, comment='库位名称') + # storage_location_name = Column(String(64), nullable=False, comment='库位名称') scene_id = Column(String(64), nullable=False, comment='场景ID') # 原有字段 @@ -65,7 +65,7 @@ class OperatePoint(BaseModel): ) def __repr__(self): - return f"" + return f"" def get_available_layers(self): """获取可用层数""" diff --git a/data/models/operate_point_layer.py b/data/models/operate_point_layer.py index d9ac1ef..acbfad9 100644 --- a/data/models/operate_point_layer.py +++ b/data/models/operate_point_layer.py @@ -23,11 +23,11 @@ class OperatePointLayer(BaseModel): id = Column(CHAR(64), primary_key=True, comment='层ID') operate_point_id = Column(CHAR(64), ForeignKey('vwed_operate_point.id'), nullable=False, comment='动作点ID') station_name = Column(String(64), nullable=False, comment='动作点名称') - storage_location_name = Column(String(64), nullable=False, comment='库位名称') + # storage_location_name = Column(String(64), nullable=False, comment='库位名称') area_name = Column(String(64), nullable=True, comment='库区名称') scene_id = Column(String(64), nullable=False, comment='场景ID(冗余字段)') layer_index = Column(Integer, nullable=False, comment='层索引(从1开始)') - layer_name = Column(String(64), comment='层名称') + layer_name = Column(String(64), comment='库位名称') # 货物状态 is_occupied = Column(Boolean, nullable=False, default=False, comment='是否占用') @@ -66,7 +66,7 @@ class OperatePointLayer(BaseModel): ) def __repr__(self): - return f"" + return f"" def can_store_goods(self, weight=None, volume=None): """ diff --git a/logs/app.log b/logs/app.log index 9b57e40..991dddc 100644 --- a/logs/app.log +++ b/logs/app.log @@ -64745,3 +64745,1075 @@ Stack (most recent call last): 2025-07-16 10:49:25,621 - data.session - INFO - 异步数据库连接已关闭 2025-07-16 10:49:25,622 - data.session - INFO - 正在关闭数据库连接... 2025-07-16 10:49:25,622 - data.session - INFO - 数据库连接已关闭 +2025-07-16 11:06:49,926 - utils.component_manager - INFO - 已加载 8 个组件分类,共 52 个组件类型 +2025-07-16 11:06:52,658 - app - INFO - 服务器配置 - Host: 0.0.0.0, Port: 8000, Workers: 1, Reload: False +2025-07-16 11:06:52,669 - asyncio - DEBUG - Using proactor: IocpProactor +2025-07-16 11:06:53,155 - data.session - INFO - 正在初始化数据库... +2025-07-16 11:06:53,216 - data.session - INFO - 数据库 vwed_task 已创建或已存在 +2025-07-16 11:06:53,263 - data.session - INFO - 数据库表初始化完成 +2025-07-16 11:06:54,149 - services.enhanced_scheduler.task_scheduler - INFO - 加载任务调度器配置: 工作线程数=15-30, 队列数=3, 任务超时=3600秒 +2025-07-16 11:06:54,151 - services.enhanced_scheduler.priority_queue_manager - INFO - 初始化优先级队列管理器: 队列数=3, 阈值百分比=[0.1, 0.3, 1.0], 工作线程比例=[0.6, 0.3, 0.1] +2025-07-16 11:06:54,151 - services.enhanced_scheduler.worker_manager - INFO - 初始化工作线程管理器: min=15, max=30, 心跳间隔=120秒, 自动扩缩容间隔=120秒 +2025-07-16 11:06:54,153 - services.enhanced_scheduler.task_persistence - INFO - 初始化任务持久化管理器: 间隔=300秒, 目录=D:\jsw_code\project\VWED_task\data\task_backups, 最大备份数=5 +2025-07-16 11:06:54,154 - services.enhanced_scheduler.periodic_task_manager - INFO - 初始化定时任务管理器: 检查间隔=5秒 +2025-07-16 11:06:54,154 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器初始化完成 +2025-07-16 11:06:54,156 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 0, 当前工作线程数: 1 +2025-07-16 11:06:54,156 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 1, 当前工作线程数: 2 +2025-07-16 11:06:54,157 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 2, 当前工作线程数: 3 +2025-07-16 11:06:54,158 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 3, 当前工作线程数: 4 +2025-07-16 11:06:54,158 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 4, 当前工作线程数: 5 +2025-07-16 11:06:54,159 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 5, 当前工作线程数: 6 +2025-07-16 11:06:54,159 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 6, 当前工作线程数: 7 +2025-07-16 11:06:54,160 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 7, 当前工作线程数: 8 +2025-07-16 11:06:54,161 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 8, 当前工作线程数: 9 +2025-07-16 11:06:54,162 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 9, 当前工作线程数: 10 +2025-07-16 11:06:54,162 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 10, 当前工作线程数: 11 +2025-07-16 11:06:54,168 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 11, 当前工作线程数: 12 +2025-07-16 11:06:54,175 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 12, 当前工作线程数: 13 +2025-07-16 11:06:54,180 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 13, 当前工作线程数: 14 +2025-07-16 11:06:54,190 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 14, 当前工作线程数: 15 +2025-07-16 11:06:54,207 - services.enhanced_scheduler.worker_manager - INFO - 工作线程管理器启动成功,初始工作线程数: 15 +2025-07-16 11:06:54,217 - services.enhanced_scheduler.task_persistence - INFO - 任务持久化管理器启动成功 +2025-07-16 11:06:54,243 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 启动 +2025-07-16 11:06:54,255 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 启动 +2025-07-16 11:06:54,260 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 启动 +2025-07-16 11:06:54,266 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 启动 +2025-07-16 11:06:54,273 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 启动 +2025-07-16 11:06:54,282 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 启动 +2025-07-16 11:06:54,289 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 启动 +2025-07-16 11:06:54,297 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 启动 +2025-07-16 11:06:54,304 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 启动 +2025-07-16 11:06:54,309 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 启动 +2025-07-16 11:06:54,311 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 启动 +2025-07-16 11:06:54,317 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 启动 +2025-07-16 11:06:54,319 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 启动 +2025-07-16 11:06:54,321 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 启动 +2025-07-16 11:06:54,322 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 启动 +2025-07-16 11:06:54,326 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务启动 +2025-07-16 11:06:54,333 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程启动 +2025-07-16 11:06:54,344 - aiomysql - DEBUG - caching sha2: succeeded by fast path. +2025-07-16 11:06:55,093 - services.enhanced_scheduler.periodic_task_manager - INFO - 已加载 0 个定时任务 +2025-07-16 11:06:55,105 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务管理器启动成功 +2025-07-16 11:06:55,133 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器启动成功,工作线程数: 15 +2025-07-16 11:06:55,150 - app - INFO - 增强版任务调度器已启动,最小工作线程数: 15,最大工作线程数: 30 +2025-07-16 11:06:55,173 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器启动 +2025-07-16 11:06:55,184 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控启动 +2025-07-16 11:07:06,509 - middleware.request_logger - INFO - 请求开始: POST /api/vwed-map-data/push 来自 127.0.0.1 +2025-07-16 11:07:06,513 - services.map_data_service - INFO - 开始增量推送地图数据: 场景ID=1936411520272753371 +2025-07-16 11:07:06,513 - services.map_data_service - INFO - 开始处理库区数据: 数量=2 +2025-07-16 11:07:06,516 - services.map_data_service - INFO - 更新库区: 一般存储区B +2025-07-16 11:07:06,517 - services.map_data_service - INFO - 更新库区: 一般存储区C +2025-07-16 11:07:06,518 - services.map_data_service - INFO - 开始处理动作点数据: 数量=4 +2025-07-16 11:07:06,520 - services.map_data_service - INFO - 更新动作点: STATION-A-001 +2025-07-16 11:07:06,523 - services.map_data_service - DEBUG - 更新分层: 1-1 (layer_index=1) +2025-07-16 11:07:06,524 - services.map_data_service - DEBUG - 更新分层: 1-2 (layer_index=2) +2025-07-16 11:07:06,526 - services.map_data_service - INFO - 更新动作点: STATION-B-001 +2025-07-16 11:07:06,527 - services.map_data_service - DEBUG - 更新分层: 2-1 (layer_index=1) +2025-07-16 11:07:06,528 - services.map_data_service - INFO - 更新动作点: STATION-B-004 +2025-07-16 11:07:06,529 - services.map_data_service - DEBUG - 更新分层: 4-1 (layer_index=1) +2025-07-16 11:07:06,530 - services.map_data_service - DEBUG - 更新分层: 4-2 (layer_index=2) +2025-07-16 11:07:06,530 - services.map_data_service - DEBUG - 更新分层: 4-3 (layer_index=3) +2025-07-16 11:07:06,531 - services.map_data_service - INFO - 更新动作点: STATION-B-003 +2025-07-16 11:07:06,531 - services.map_data_service - DEBUG - 更新分层: 3-1 (layer_index=1) +2025-07-16 11:07:06,550 - services.map_data_service - INFO - 地图数据推送成功: 场景ID=1936411520272753371, 库区(新增=0,更新=2), 动作点(新增=0,更新=4), 分层(新增=0,更新=7) +2025-07-16 11:07:06,551 - middleware.request_logger - INFO - 请求完成: POST /api/vwed-map-data/push 状态码: 200 耗时: 0.0420秒 +2025-07-16 11:08:55,349 - services.enhanced_scheduler.task_scheduler - INFO - 清理 1 个僵尸任务 +2025-07-16 11:09:55,352 - services.enhanced_scheduler.task_scheduler - INFO - 清理 1 个僵尸任务 +2025-07-16 11:10:54,364 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 0 心跳超时,重启中... +2025-07-16 11:10:54,367 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 被取消 +2025-07-16 11:10:54,367 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 结束 +2025-07-16 11:10:54,368 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 0, 当前工作线程数: 14 +2025-07-16 11:10:54,368 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 0, 当前工作线程数: 15 +2025-07-16 11:10:54,369 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 1 心跳超时,重启中... +2025-07-16 11:10:54,369 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 启动 +2025-07-16 11:10:54,370 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 被取消 +2025-07-16 11:10:54,370 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 结束 +2025-07-16 11:10:54,372 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 1, 当前工作线程数: 14 +2025-07-16 11:10:54,373 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 1, 当前工作线程数: 15 +2025-07-16 11:10:54,374 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 2 心跳超时,重启中... +2025-07-16 11:10:54,374 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 启动 +2025-07-16 11:10:54,375 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 被取消 +2025-07-16 11:10:54,376 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 结束 +2025-07-16 11:10:54,378 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 2, 当前工作线程数: 14 +2025-07-16 11:10:54,378 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 2, 当前工作线程数: 15 +2025-07-16 11:10:54,379 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 3 心跳超时,重启中... +2025-07-16 11:10:54,381 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 被取消 +2025-07-16 11:10:54,382 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 结束 +2025-07-16 11:10:54,383 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 启动 +2025-07-16 11:10:54,384 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 3, 当前工作线程数: 14 +2025-07-16 11:10:54,385 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 3, 当前工作线程数: 15 +2025-07-16 11:10:54,385 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 4 心跳超时,重启中... +2025-07-16 11:10:54,386 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 启动 +2025-07-16 11:10:54,387 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 被取消 +2025-07-16 11:10:54,388 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 结束 +2025-07-16 11:10:54,389 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 4, 当前工作线程数: 14 +2025-07-16 11:10:54,390 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 4, 当前工作线程数: 15 +2025-07-16 11:10:54,391 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 5 心跳超时,重启中... +2025-07-16 11:10:54,392 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 启动 +2025-07-16 11:10:54,392 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 被取消 +2025-07-16 11:10:54,393 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 结束 +2025-07-16 11:10:54,394 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 5, 当前工作线程数: 14 +2025-07-16 11:10:54,395 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 5, 当前工作线程数: 15 +2025-07-16 11:10:54,397 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 6 心跳超时,重启中... +2025-07-16 11:10:54,398 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 启动 +2025-07-16 11:10:54,401 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 被取消 +2025-07-16 11:10:54,402 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 结束 +2025-07-16 11:10:54,403 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 6, 当前工作线程数: 14 +2025-07-16 11:10:54,404 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 6, 当前工作线程数: 15 +2025-07-16 11:10:54,406 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 7 心跳超时,重启中... +2025-07-16 11:10:54,407 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 启动 +2025-07-16 11:10:54,409 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 被取消 +2025-07-16 11:10:54,412 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 结束 +2025-07-16 11:10:54,413 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 7, 当前工作线程数: 14 +2025-07-16 11:10:54,414 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 7, 当前工作线程数: 15 +2025-07-16 11:10:54,415 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 8 心跳超时,重启中... +2025-07-16 11:10:54,415 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 启动 +2025-07-16 11:10:54,416 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 被取消 +2025-07-16 11:10:54,416 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 结束 +2025-07-16 11:10:54,416 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 8, 当前工作线程数: 14 +2025-07-16 11:10:54,416 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 8, 当前工作线程数: 15 +2025-07-16 11:10:54,417 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 9 心跳超时,重启中... +2025-07-16 11:10:54,417 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 启动 +2025-07-16 11:10:54,417 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 被取消 +2025-07-16 11:10:54,417 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 结束 +2025-07-16 11:10:54,417 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 9, 当前工作线程数: 14 +2025-07-16 11:10:54,417 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 9, 当前工作线程数: 15 +2025-07-16 11:10:54,417 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 10 心跳超时,重启中... +2025-07-16 11:10:54,417 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 启动 +2025-07-16 11:10:54,418 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 被取消 +2025-07-16 11:10:54,420 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 结束 +2025-07-16 11:10:54,422 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 10, 当前工作线程数: 14 +2025-07-16 11:10:54,423 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 10, 当前工作线程数: 15 +2025-07-16 11:10:54,424 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 11 心跳超时,重启中... +2025-07-16 11:10:54,424 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 启动 +2025-07-16 11:10:54,429 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 被取消 +2025-07-16 11:10:54,430 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 结束 +2025-07-16 11:10:54,430 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 11, 当前工作线程数: 14 +2025-07-16 11:10:54,432 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 11, 当前工作线程数: 15 +2025-07-16 11:10:54,434 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 12 心跳超时,重启中... +2025-07-16 11:10:54,435 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 启动 +2025-07-16 11:10:54,435 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 被取消 +2025-07-16 11:10:54,437 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 结束 +2025-07-16 11:10:54,437 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 12, 当前工作线程数: 14 +2025-07-16 11:10:54,438 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 12, 当前工作线程数: 15 +2025-07-16 11:10:54,439 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 13 心跳超时,重启中... +2025-07-16 11:10:54,440 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 启动 +2025-07-16 11:10:54,440 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 被取消 +2025-07-16 11:10:54,441 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 结束 +2025-07-16 11:10:54,442 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 13, 当前工作线程数: 14 +2025-07-16 11:10:54,443 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 13, 当前工作线程数: 15 +2025-07-16 11:10:54,444 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 14 心跳超时,重启中... +2025-07-16 11:10:54,444 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 启动 +2025-07-16 11:10:54,446 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 被取消 +2025-07-16 11:10:54,447 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 结束 +2025-07-16 11:10:54,448 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 14, 当前工作线程数: 14 +2025-07-16 11:10:54,449 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 14, 当前工作线程数: 15 +2025-07-16 11:10:54,460 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 启动 +2025-07-16 11:11:55,342 - services.enhanced_scheduler.task_scheduler - INFO - 清理 1 个僵尸任务 +2025-07-16 11:14:54,528 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 0 心跳超时,重启中... +2025-07-16 11:14:54,531 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 被取消 +2025-07-16 11:14:54,531 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 结束 +2025-07-16 11:14:54,531 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 0, 当前工作线程数: 14 +2025-07-16 11:14:54,531 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 0, 当前工作线程数: 15 +2025-07-16 11:14:54,532 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 1 心跳超时,重启中... +2025-07-16 11:14:54,532 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 启动 +2025-07-16 11:14:54,532 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 被取消 +2025-07-16 11:14:54,532 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 结束 +2025-07-16 11:14:54,532 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 1, 当前工作线程数: 14 +2025-07-16 11:14:54,533 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 1, 当前工作线程数: 15 +2025-07-16 11:14:54,533 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 2 心跳超时,重启中... +2025-07-16 11:14:54,533 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 启动 +2025-07-16 11:14:54,533 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 被取消 +2025-07-16 11:14:54,533 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 结束 +2025-07-16 11:14:54,535 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 2, 当前工作线程数: 14 +2025-07-16 11:14:54,535 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 2, 当前工作线程数: 15 +2025-07-16 11:14:54,535 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 3 心跳超时,重启中... +2025-07-16 11:14:54,536 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 启动 +2025-07-16 11:14:54,536 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 被取消 +2025-07-16 11:14:54,536 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 结束 +2025-07-16 11:14:54,536 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 3, 当前工作线程数: 14 +2025-07-16 11:14:54,536 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 3, 当前工作线程数: 15 +2025-07-16 11:14:54,537 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 4 心跳超时,重启中... +2025-07-16 11:14:54,537 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 启动 +2025-07-16 11:14:54,538 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 被取消 +2025-07-16 11:14:54,539 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 结束 +2025-07-16 11:14:54,539 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 4, 当前工作线程数: 14 +2025-07-16 11:14:54,539 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 4, 当前工作线程数: 15 +2025-07-16 11:14:54,539 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 5 心跳超时,重启中... +2025-07-16 11:14:54,539 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 启动 +2025-07-16 11:14:54,540 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 被取消 +2025-07-16 11:14:54,540 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 结束 +2025-07-16 11:14:54,540 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 5, 当前工作线程数: 14 +2025-07-16 11:14:54,540 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 5, 当前工作线程数: 15 +2025-07-16 11:14:54,540 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 6 心跳超时,重启中... +2025-07-16 11:14:54,540 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 启动 +2025-07-16 11:14:54,540 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 被取消 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 结束 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 6, 当前工作线程数: 14 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 6, 当前工作线程数: 15 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 7 心跳超时,重启中... +2025-07-16 11:14:54,541 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 启动 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 被取消 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 结束 +2025-07-16 11:14:54,541 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 7, 当前工作线程数: 14 +2025-07-16 11:14:54,542 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 7, 当前工作线程数: 15 +2025-07-16 11:14:54,544 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 8 心跳超时,重启中... +2025-07-16 11:14:54,544 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 启动 +2025-07-16 11:14:54,544 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 被取消 +2025-07-16 11:14:54,544 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 结束 +2025-07-16 11:14:54,544 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 8, 当前工作线程数: 14 +2025-07-16 11:14:54,544 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 8, 当前工作线程数: 15 +2025-07-16 11:14:54,548 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 9 心跳超时,重启中... +2025-07-16 11:14:54,551 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 启动 +2025-07-16 11:14:54,551 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 被取消 +2025-07-16 11:14:54,552 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 结束 +2025-07-16 11:14:54,553 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 9, 当前工作线程数: 14 +2025-07-16 11:14:54,553 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 9, 当前工作线程数: 15 +2025-07-16 11:14:54,558 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 10 心跳超时,重启中... +2025-07-16 11:14:54,565 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 启动 +2025-07-16 11:14:54,565 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 被取消 +2025-07-16 11:14:54,565 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 结束 +2025-07-16 11:14:54,566 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 10, 当前工作线程数: 14 +2025-07-16 11:14:54,566 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 10, 当前工作线程数: 15 +2025-07-16 11:14:54,566 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 11 心跳超时,重启中... +2025-07-16 11:14:54,567 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 启动 +2025-07-16 11:14:54,567 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 被取消 +2025-07-16 11:14:54,567 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 结束 +2025-07-16 11:14:54,567 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 11, 当前工作线程数: 14 +2025-07-16 11:14:54,568 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 11, 当前工作线程数: 15 +2025-07-16 11:14:54,568 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 12 心跳超时,重启中... +2025-07-16 11:14:54,568 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 启动 +2025-07-16 11:14:54,569 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 被取消 +2025-07-16 11:14:54,569 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 结束 +2025-07-16 11:14:54,570 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 12, 当前工作线程数: 14 +2025-07-16 11:14:54,570 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 12, 当前工作线程数: 15 +2025-07-16 11:14:54,571 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 13 心跳超时,重启中... +2025-07-16 11:14:54,571 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 启动 +2025-07-16 11:14:54,571 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 被取消 +2025-07-16 11:14:54,571 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 结束 +2025-07-16 11:14:54,572 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 13, 当前工作线程数: 14 +2025-07-16 11:14:54,572 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 13, 当前工作线程数: 15 +2025-07-16 11:14:54,575 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 14 心跳超时,重启中... +2025-07-16 11:14:54,576 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 启动 +2025-07-16 11:14:54,577 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 被取消 +2025-07-16 11:14:54,582 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 结束 +2025-07-16 11:14:54,582 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 14, 当前工作线程数: 14 +2025-07-16 11:14:54,582 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 14, 当前工作线程数: 15 +2025-07-16 11:14:54,601 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 启动 +2025-07-16 11:18:54,644 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 0 心跳超时,重启中... +2025-07-16 11:18:54,645 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 被取消 +2025-07-16 11:18:54,645 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 结束 +2025-07-16 11:18:54,646 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 0, 当前工作线程数: 14 +2025-07-16 11:18:54,646 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 0, 当前工作线程数: 15 +2025-07-16 11:18:54,646 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 1 心跳超时,重启中... +2025-07-16 11:18:54,646 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 启动 +2025-07-16 11:18:54,648 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 被取消 +2025-07-16 11:18:54,648 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 结束 +2025-07-16 11:18:54,648 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 1, 当前工作线程数: 14 +2025-07-16 11:18:54,648 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 1, 当前工作线程数: 15 +2025-07-16 11:18:54,649 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 2 心跳超时,重启中... +2025-07-16 11:18:54,649 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 启动 +2025-07-16 11:18:54,649 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 被取消 +2025-07-16 11:18:54,649 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 结束 +2025-07-16 11:18:54,649 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 2, 当前工作线程数: 14 +2025-07-16 11:18:54,650 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 2, 当前工作线程数: 15 +2025-07-16 11:18:54,650 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 3 心跳超时,重启中... +2025-07-16 11:18:54,650 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 启动 +2025-07-16 11:18:54,650 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 被取消 +2025-07-16 11:18:54,650 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 结束 +2025-07-16 11:18:54,651 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 3, 当前工作线程数: 14 +2025-07-16 11:18:54,651 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 3, 当前工作线程数: 15 +2025-07-16 11:18:54,651 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 4 心跳超时,重启中... +2025-07-16 11:18:54,651 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 启动 +2025-07-16 11:18:54,652 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 被取消 +2025-07-16 11:18:54,652 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 结束 +2025-07-16 11:18:54,652 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 4, 当前工作线程数: 14 +2025-07-16 11:18:54,652 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 4, 当前工作线程数: 15 +2025-07-16 11:18:54,653 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 5 心跳超时,重启中... +2025-07-16 11:18:54,653 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 启动 +2025-07-16 11:18:54,653 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 被取消 +2025-07-16 11:18:54,654 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 结束 +2025-07-16 11:18:54,654 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 5, 当前工作线程数: 14 +2025-07-16 11:18:54,654 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 5, 当前工作线程数: 15 +2025-07-16 11:18:54,655 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 6 心跳超时,重启中... +2025-07-16 11:18:54,655 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 启动 +2025-07-16 11:18:54,655 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 被取消 +2025-07-16 11:18:54,655 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 结束 +2025-07-16 11:18:54,656 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 6, 当前工作线程数: 14 +2025-07-16 11:18:54,656 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 6, 当前工作线程数: 15 +2025-07-16 11:18:54,656 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 7 心跳超时,重启中... +2025-07-16 11:18:54,656 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 启动 +2025-07-16 11:18:54,656 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 被取消 +2025-07-16 11:18:54,656 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 结束 +2025-07-16 11:18:54,656 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 7, 当前工作线程数: 14 +2025-07-16 11:18:54,657 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 7, 当前工作线程数: 15 +2025-07-16 11:18:54,657 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 8 心跳超时,重启中... +2025-07-16 11:18:54,657 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 启动 +2025-07-16 11:18:54,657 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 被取消 +2025-07-16 11:18:54,657 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 结束 +2025-07-16 11:18:54,657 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 8, 当前工作线程数: 14 +2025-07-16 11:18:54,658 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 8, 当前工作线程数: 15 +2025-07-16 11:18:54,658 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 9 心跳超时,重启中... +2025-07-16 11:18:54,658 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 启动 +2025-07-16 11:18:54,660 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 被取消 +2025-07-16 11:18:54,660 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 结束 +2025-07-16 11:18:54,660 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 9, 当前工作线程数: 14 +2025-07-16 11:18:54,660 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 9, 当前工作线程数: 15 +2025-07-16 11:18:54,660 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 10 心跳超时,重启中... +2025-07-16 11:18:54,660 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 启动 +2025-07-16 11:18:54,663 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 被取消 +2025-07-16 11:18:54,663 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 结束 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 10, 当前工作线程数: 14 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 10, 当前工作线程数: 15 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 11 心跳超时,重启中... +2025-07-16 11:18:54,664 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 启动 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 被取消 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 结束 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 11, 当前工作线程数: 14 +2025-07-16 11:18:54,664 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 11, 当前工作线程数: 15 +2025-07-16 11:18:54,665 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 12 心跳超时,重启中... +2025-07-16 11:18:54,665 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 启动 +2025-07-16 11:18:54,665 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 被取消 +2025-07-16 11:18:54,665 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 结束 +2025-07-16 11:18:54,665 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 12, 当前工作线程数: 14 +2025-07-16 11:18:54,665 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 12, 当前工作线程数: 15 +2025-07-16 11:18:54,665 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 13 心跳超时,重启中... +2025-07-16 11:18:54,667 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 启动 +2025-07-16 11:18:54,667 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 被取消 +2025-07-16 11:18:54,667 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 结束 +2025-07-16 11:18:54,667 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 13, 当前工作线程数: 14 +2025-07-16 11:18:54,667 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 13, 当前工作线程数: 15 +2025-07-16 11:18:54,667 - services.enhanced_scheduler.worker_manager - INFO - 工作线程 14 心跳超时,重启中... +2025-07-16 11:18:54,667 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 启动 +2025-07-16 11:18:54,667 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 被取消 +2025-07-16 11:18:54,668 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 结束 +2025-07-16 11:18:54,668 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 14, 当前工作线程数: 14 +2025-07-16 11:18:54,668 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 14, 当前工作线程数: 15 +2025-07-16 11:18:54,685 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 启动 +2025-07-16 11:18:55,416 - services.enhanced_scheduler.task_scheduler - INFO - 清理 1 个僵尸任务 +2025-07-16 11:19:37,991 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 被取消 +2025-07-16 16:22:24,480 - utils.component_manager - INFO - 已加载 8 个组件分类,共 52 个组件类型 +2025-07-16 16:22:25,585 - app - INFO - 服务器配置 - Host: 0.0.0.0, Port: 8000, Workers: 1, Reload: False +2025-07-16 16:22:25,589 - asyncio - DEBUG - Using proactor: IocpProactor +2025-07-16 16:22:25,678 - data.session - INFO - 正在初始化数据库... +2025-07-16 16:22:25,710 - data.session - INFO - 数据库 vwed_task 已创建或已存在 +2025-07-16 16:22:25,883 - data.session - INFO - 数据库表初始化完成 +2025-07-16 16:22:25,943 - services.enhanced_scheduler.task_scheduler - INFO - 加载任务调度器配置: 工作线程数=15-30, 队列数=3, 任务超时=3600秒 +2025-07-16 16:22:25,947 - services.enhanced_scheduler.priority_queue_manager - INFO - 初始化优先级队列管理器: 队列数=3, 阈值百分比=[0.1, 0.3, 1.0], 工作线程比例=[0.6, 0.3, 0.1] +2025-07-16 16:22:25,952 - services.enhanced_scheduler.worker_manager - INFO - 初始化工作线程管理器: min=15, max=30, 心跳间隔=120秒, 自动扩缩容间隔=120秒 +2025-07-16 16:22:25,954 - services.enhanced_scheduler.task_persistence - INFO - 初始化任务持久化管理器: 间隔=300秒, 目录=D:\jsw_code\project\VWED_task\data\task_backups, 最大备份数=5 +2025-07-16 16:22:25,959 - services.enhanced_scheduler.periodic_task_manager - INFO - 初始化定时任务管理器: 检查间隔=5秒 +2025-07-16 16:22:25,964 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器初始化完成 +2025-07-16 16:22:25,966 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 0, 当前工作线程数: 1 +2025-07-16 16:22:25,966 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 1, 当前工作线程数: 2 +2025-07-16 16:22:25,966 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 2, 当前工作线程数: 3 +2025-07-16 16:22:25,966 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 3, 当前工作线程数: 4 +2025-07-16 16:22:25,967 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 4, 当前工作线程数: 5 +2025-07-16 16:22:25,967 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 5, 当前工作线程数: 6 +2025-07-16 16:22:25,981 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 6, 当前工作线程数: 7 +2025-07-16 16:22:25,982 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 7, 当前工作线程数: 8 +2025-07-16 16:22:25,982 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 8, 当前工作线程数: 9 +2025-07-16 16:22:25,983 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 9, 当前工作线程数: 10 +2025-07-16 16:22:25,983 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 10, 当前工作线程数: 11 +2025-07-16 16:22:25,983 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 11, 当前工作线程数: 12 +2025-07-16 16:22:25,983 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 12, 当前工作线程数: 13 +2025-07-16 16:22:25,984 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 13, 当前工作线程数: 14 +2025-07-16 16:22:25,984 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 14, 当前工作线程数: 15 +2025-07-16 16:22:25,985 - services.enhanced_scheduler.worker_manager - INFO - 工作线程管理器启动成功,初始工作线程数: 15 +2025-07-16 16:22:25,990 - services.enhanced_scheduler.task_persistence - INFO - 任务持久化管理器启动成功 +2025-07-16 16:22:26,000 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 启动 +2025-07-16 16:22:26,009 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 启动 +2025-07-16 16:22:26,012 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 启动 +2025-07-16 16:22:26,016 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 启动 +2025-07-16 16:22:26,022 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 启动 +2025-07-16 16:22:26,026 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 启动 +2025-07-16 16:22:26,031 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 启动 +2025-07-16 16:22:26,036 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 启动 +2025-07-16 16:22:26,043 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 启动 +2025-07-16 16:22:26,048 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 启动 +2025-07-16 16:22:26,052 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 启动 +2025-07-16 16:22:26,055 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 启动 +2025-07-16 16:22:26,058 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 启动 +2025-07-16 16:22:26,064 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 启动 +2025-07-16 16:22:26,068 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 启动 +2025-07-16 16:22:26,070 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务启动 +2025-07-16 16:22:26,075 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程启动 +2025-07-16 16:22:26,077 - aiomysql - DEBUG - caching sha2: succeeded by fast path. +2025-07-16 16:22:26,130 - services.enhanced_scheduler.periodic_task_manager - INFO - 已加载 0 个定时任务 +2025-07-16 16:22:26,133 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务管理器启动成功 +2025-07-16 16:22:26,137 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器启动成功,工作线程数: 15 +2025-07-16 16:22:26,141 - app - INFO - 增强版任务调度器已启动,最小工作线程数: 15,最大工作线程数: 30 +2025-07-16 16:22:26,144 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器启动 +2025-07-16 16:22:26,147 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控启动 +2025-07-16 16:23:17,868 - middleware.request_logger - INFO - 请求开始: POST /api/vwed-map-data/push 来自 127.0.0.1 +2025-07-16 16:23:17,884 - middleware.request_logger - ERROR - [logger.py:204] - error() - 请求异常: POST /api/vwed-map-data/push 耗时: 0.0066秒 +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 111, in receive + return self.receive_nowait() + ^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 106, in receive_nowait + raise WouldBlock +anyio.WouldBlock + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 124, in receive + return receiver.item + ^^^^^^^^^^^^^ +AttributeError: 'MemoryObjectItemReceiver' object has no attribute 'item' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 147, in call_next + message = await recv_stream.receive() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 126, in receive + raise EndOfStream +anyio.EndOfStream + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 43, in log_requests + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 153, in call_next + raise app_exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 140, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\cors.py", line 85, in __call__ + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ + await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 714, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 734, in app + await route.handle(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 288, in handle + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 76, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 73, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\routing.py", line 291, in app + solved_result = await solve_dependencies( + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 666, in solve_dependencies + ) = await request_body_to_args( # body_params checked above + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 898, in request_body_to_args + v_, errors_ = _validate_value_with_model_field( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 706, in _validate_value_with_model_field + v_, errors_ = field.validate(value, values, loc=loc) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\_compat.py", line 129, in validate + self._type_adapter.validate_python(value, from_attributes=True), + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\type_adapter.py", line 412, in validate_python + return self.validator.validate_python( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\_internal\_decorators_v1.py", line 96, in wrapper1 + return val1(value, values=info.data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\jsw_code\project\VWED_task\routes\model\map_model.py", line 89, in validate_operate_points + storage_location_names = [point.storage_location_name for point in v] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\main.py", line 891, in __getattr__ + raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') +AttributeError: 'OperatePointData' object has no attribute 'storage_location_name' +Stack (most recent call last): + File "D:\jsw_code\project\VWED_task\app.py", line 72, in + uvicorn.run( + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\main.py", line 579, in run + server.run() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\server.py", line 66, in run + return asyncio.run(self.serve(sockets=sockets)) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\runners.py", line 195, in run + return runner.run(main) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\runners.py", line 118, in run + return self._loop.run_until_complete(task) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 678, in run_until_complete + self.run_forever() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\windows_events.py", line 322, in run_forever + super().run_forever() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 645, in run_forever + self._run_once() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 1999, in _run_once + handle._run() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\events.py", line 88, in _run + self._context.run(self._callback, *self._args) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi + result = await app( # type: ignore[func-returns-value] + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ + return await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\applications.py", line 1054, in __call__ + await super().__call__(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\applications.py", line 112, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ + await self.app(scope, receive, _send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 175, in __call__ + response = await self.dispatch_func(request, call_next) + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 53, in log_requests + logger.error(f"请求异常: {method} {url} 耗时: {process_time:.4f}秒") + File "D:\jsw_code\project\VWED_task\utils\logger.py", line 204, in error + self.logger.error(message, *args, exc_info=exc_info, stack_info=stack_info, **kwargs) +2025-07-16 16:23:17,908 - middleware.request_logger - ERROR - [logger.py:204] - error() - 异常详情: 'OperatePointData' object has no attribute 'storage_location_name' +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 111, in receive + return self.receive_nowait() + ^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 106, in receive_nowait + raise WouldBlock +anyio.WouldBlock + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 124, in receive + return receiver.item + ^^^^^^^^^^^^^ +AttributeError: 'MemoryObjectItemReceiver' object has no attribute 'item' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 147, in call_next + message = await recv_stream.receive() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 126, in receive + raise EndOfStream +anyio.EndOfStream + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 43, in log_requests + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 153, in call_next + raise app_exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 140, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\cors.py", line 85, in __call__ + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ + await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 714, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 734, in app + await route.handle(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 288, in handle + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 76, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 73, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\routing.py", line 291, in app + solved_result = await solve_dependencies( + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 666, in solve_dependencies + ) = await request_body_to_args( # body_params checked above + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 898, in request_body_to_args + v_, errors_ = _validate_value_with_model_field( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 706, in _validate_value_with_model_field + v_, errors_ = field.validate(value, values, loc=loc) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\_compat.py", line 129, in validate + self._type_adapter.validate_python(value, from_attributes=True), + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\type_adapter.py", line 412, in validate_python + return self.validator.validate_python( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\_internal\_decorators_v1.py", line 96, in wrapper1 + return val1(value, values=info.data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\jsw_code\project\VWED_task\routes\model\map_model.py", line 89, in validate_operate_points + storage_location_names = [point.storage_location_name for point in v] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\main.py", line 891, in __getattr__ + raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') +AttributeError: 'OperatePointData' object has no attribute 'storage_location_name' +Stack (most recent call last): + File "D:\jsw_code\project\VWED_task\app.py", line 72, in + uvicorn.run( + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\main.py", line 579, in run + server.run() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\server.py", line 66, in run + return asyncio.run(self.serve(sockets=sockets)) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\runners.py", line 195, in run + return runner.run(main) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\runners.py", line 118, in run + return self._loop.run_until_complete(task) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 678, in run_until_complete + self.run_forever() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\windows_events.py", line 322, in run_forever + super().run_forever() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 645, in run_forever + self._run_once() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 1999, in _run_once + handle._run() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\events.py", line 88, in _run + self._context.run(self._callback, *self._args) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi + result = await app( # type: ignore[func-returns-value] + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ + return await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\applications.py", line 1054, in __call__ + await super().__call__(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\applications.py", line 112, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ + await self.app(scope, receive, _send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 175, in __call__ + response = await self.dispatch_func(request, call_next) + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 54, in log_requests + logger.error(f"异常详情: {str(e)}") + File "D:\jsw_code\project\VWED_task\utils\logger.py", line 204, in error + self.logger.error(message, *args, exc_info=exc_info, stack_info=stack_info, **kwargs) +2025-07-16 16:23:17,919 - middleware.request_logger - ERROR - [logger.py:204] - error() - Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 111, in receive + return self.receive_nowait() + ^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 106, in receive_nowait + raise WouldBlock +anyio.WouldBlock + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 124, in receive + return receiver.item + ^^^^^^^^^^^^^ +AttributeError: 'MemoryObjectItemReceiver' object has no attribute 'item' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 147, in call_next + message = await recv_stream.receive() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 126, in receive + raise EndOfStream +anyio.EndOfStream + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 43, in log_requests + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 153, in call_next + raise app_exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 140, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\cors.py", line 85, in __call__ + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ + await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 714, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 734, in app + await route.handle(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 288, in handle + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 76, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 73, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\routing.py", line 291, in app + solved_result = await solve_dependencies( + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 666, in solve_dependencies + ) = await request_body_to_args( # body_params checked above + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 898, in request_body_to_args + v_, errors_ = _validate_value_with_model_field( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 706, in _validate_value_with_model_field + v_, errors_ = field.validate(value, values, loc=loc) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\_compat.py", line 129, in validate + self._type_adapter.validate_python(value, from_attributes=True), + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\type_adapter.py", line 412, in validate_python + return self.validator.validate_python( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\_internal\_decorators_v1.py", line 96, in wrapper1 + return val1(value, values=info.data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\jsw_code\project\VWED_task\routes\model\map_model.py", line 89, in validate_operate_points + storage_location_names = [point.storage_location_name for point in v] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\main.py", line 891, in __getattr__ + raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') +AttributeError: 'OperatePointData' object has no attribute 'storage_location_name' +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 111, in receive + return self.receive_nowait() + ^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 106, in receive_nowait + raise WouldBlock +anyio.WouldBlock + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 124, in receive + return receiver.item + ^^^^^^^^^^^^^ +AttributeError: 'MemoryObjectItemReceiver' object has no attribute 'item' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 147, in call_next + message = await recv_stream.receive() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\anyio\streams\memory.py", line 126, in receive + raise EndOfStream +anyio.EndOfStream + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 43, in log_requests + response = await call_next(request) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 153, in call_next + raise app_exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 140, in coro + await self.app(scope, receive_or_disconnect, send_no_error) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\cors.py", line 85, in __call__ + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ + await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 714, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 734, in app + await route.handle(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 288, in handle + await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 76, in app + await wrap_app_handling_exceptions(app, request)(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app + raise exc + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app + await app(scope, receive, sender) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\routing.py", line 73, in app + response = await f(request) + ^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\routing.py", line 291, in app + solved_result = await solve_dependencies( + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 666, in solve_dependencies + ) = await request_body_to_args( # body_params checked above + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 898, in request_body_to_args + v_, errors_ = _validate_value_with_model_field( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\dependencies\utils.py", line 706, in _validate_value_with_model_field + v_, errors_ = field.validate(value, values, loc=loc) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\_compat.py", line 129, in validate + self._type_adapter.validate_python(value, from_attributes=True), + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\type_adapter.py", line 412, in validate_python + return self.validator.validate_python( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\_internal\_decorators_v1.py", line 96, in wrapper1 + return val1(value, values=info.data) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "D:\jsw_code\project\VWED_task\routes\model\map_model.py", line 89, in validate_operate_points + storage_location_names = [point.storage_location_name for point in v] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\pydantic\main.py", line 891, in __getattr__ + raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') +AttributeError: 'OperatePointData' object has no attribute 'storage_location_name' +Stack (most recent call last): + File "D:\jsw_code\project\VWED_task\app.py", line 72, in + uvicorn.run( + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\main.py", line 579, in run + server.run() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\server.py", line 66, in run + return asyncio.run(self.serve(sockets=sockets)) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\runners.py", line 195, in run + return runner.run(main) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\runners.py", line 118, in run + return self._loop.run_until_complete(task) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 678, in run_until_complete + self.run_forever() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\windows_events.py", line 322, in run_forever + super().run_forever() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 645, in run_forever + self._run_once() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\base_events.py", line 1999, in _run_once + handle._run() + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\asyncio\events.py", line 88, in _run + self._context.run(self._callback, *self._args) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi + result = await app( # type: ignore[func-returns-value] + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ + return await self.app(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\fastapi\applications.py", line 1054, in __call__ + await super().__call__(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\applications.py", line 112, in __call__ + await self.middleware_stack(scope, receive, send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ + await self.app(scope, receive, _send) + File "d:\Users\j2538\miniconda3\envs\pytf\Lib\site-packages\starlette\middleware\base.py", line 175, in __call__ + response = await self.dispatch_func(request, call_next) + File "D:\jsw_code\project\VWED_task\middlewares\request_logger.py", line 55, in log_requests + logger.error(traceback.format_exc()) + File "D:\jsw_code\project\VWED_task\utils\logger.py", line 204, in error + self.logger.error(message, *args, exc_info=exc_info, stack_info=stack_info, **kwargs) +2025-07-16 16:24:17,012 - app - INFO - 应用程序关闭中... +2025-07-16 16:24:17,012 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控被取消 +2025-07-16 16:24:17,013 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控结束 +2025-07-16 16:24:17,013 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器被取消 +2025-07-16 16:24:17,014 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器结束 +2025-07-16 16:24:17,015 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务管理器已停止 +2025-07-16 16:24:17,015 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程被取消 +2025-07-16 16:24:17,016 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程结束 +2025-07-16 16:24:17,016 - services.enhanced_scheduler.task_persistence - INFO - 任务持久化管理器已停止 +2025-07-16 16:24:17,017 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务被取消 +2025-07-16 16:24:17,018 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务结束 +2025-07-16 16:24:17,018 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 被取消 +2025-07-16 16:24:17,020 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 结束 +2025-07-16 16:24:17,021 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 0, 当前工作线程数: 14 +2025-07-16 16:24:17,021 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 被取消 +2025-07-16 16:24:17,022 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 结束 +2025-07-16 16:24:17,026 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 1, 当前工作线程数: 13 +2025-07-16 16:24:17,027 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 被取消 +2025-07-16 16:24:17,027 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 结束 +2025-07-16 16:24:17,028 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 2, 当前工作线程数: 12 +2025-07-16 16:24:17,029 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 被取消 +2025-07-16 16:24:17,029 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 结束 +2025-07-16 16:24:17,030 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 3, 当前工作线程数: 11 +2025-07-16 16:24:17,031 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 被取消 +2025-07-16 16:24:17,031 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 结束 +2025-07-16 16:24:17,032 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 4, 当前工作线程数: 10 +2025-07-16 16:24:17,033 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 被取消 +2025-07-16 16:24:17,033 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 结束 +2025-07-16 16:24:17,034 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 5, 当前工作线程数: 9 +2025-07-16 16:24:17,035 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 被取消 +2025-07-16 16:24:17,035 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 结束 +2025-07-16 16:24:17,036 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 6, 当前工作线程数: 8 +2025-07-16 16:24:17,036 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 被取消 +2025-07-16 16:24:17,037 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 结束 +2025-07-16 16:24:17,037 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 7, 当前工作线程数: 7 +2025-07-16 16:24:17,038 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 被取消 +2025-07-16 16:24:17,038 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 结束 +2025-07-16 16:24:17,039 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 8, 当前工作线程数: 6 +2025-07-16 16:24:17,039 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 被取消 +2025-07-16 16:24:17,040 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 结束 +2025-07-16 16:24:17,040 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 9, 当前工作线程数: 5 +2025-07-16 16:24:17,042 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 被取消 +2025-07-16 16:24:17,043 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 结束 +2025-07-16 16:24:17,043 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 10, 当前工作线程数: 4 +2025-07-16 16:24:17,044 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 被取消 +2025-07-16 16:24:17,045 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 结束 +2025-07-16 16:24:17,045 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 11, 当前工作线程数: 3 +2025-07-16 16:24:17,046 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 被取消 +2025-07-16 16:24:17,047 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 结束 +2025-07-16 16:24:17,049 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 12, 当前工作线程数: 2 +2025-07-16 16:24:17,051 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 被取消 +2025-07-16 16:24:17,052 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 结束 +2025-07-16 16:24:17,053 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 13, 当前工作线程数: 1 +2025-07-16 16:24:17,053 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 被取消 +2025-07-16 16:24:17,054 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 结束 +2025-07-16 16:24:17,055 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 14, 当前工作线程数: 0 +2025-07-16 16:24:17,055 - services.enhanced_scheduler.worker_manager - INFO - 工作线程管理器已停止 +2025-07-16 16:24:17,056 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器已停止 +2025-07-16 16:24:17,056 - app - INFO - 增强版任务调度器已停止 +2025-07-16 16:24:17,058 - data.session - INFO - 正在关闭异步数据库连接... +2025-07-16 16:24:17,059 - data.session - INFO - 异步数据库连接已关闭 +2025-07-16 16:24:17,060 - data.session - INFO - 正在关闭数据库连接... +2025-07-16 16:24:17,064 - data.session - INFO - 数据库连接已关闭 +2025-07-16 16:24:27,622 - utils.component_manager - INFO - 已加载 8 个组件分类,共 52 个组件类型 +2025-07-16 16:24:28,582 - app - INFO - 服务器配置 - Host: 0.0.0.0, Port: 8000, Workers: 1, Reload: False +2025-07-16 16:24:28,584 - asyncio - DEBUG - Using proactor: IocpProactor +2025-07-16 16:24:28,647 - data.session - INFO - 正在初始化数据库... +2025-07-16 16:24:28,679 - data.session - INFO - 数据库 vwed_task 已创建或已存在 +2025-07-16 16:24:28,721 - data.session - INFO - 数据库表初始化完成 +2025-07-16 16:24:28,748 - services.enhanced_scheduler.task_scheduler - INFO - 加载任务调度器配置: 工作线程数=15-30, 队列数=3, 任务超时=3600秒 +2025-07-16 16:24:28,748 - services.enhanced_scheduler.priority_queue_manager - INFO - 初始化优先级队列管理器: 队列数=3, 阈值百分比=[0.1, 0.3, 1.0], 工作线程比例=[0.6, 0.3, 0.1] +2025-07-16 16:24:28,748 - services.enhanced_scheduler.worker_manager - INFO - 初始化工作线程管理器: min=15, max=30, 心跳间隔=120秒, 自动扩缩容间隔=120秒 +2025-07-16 16:24:28,748 - services.enhanced_scheduler.task_persistence - INFO - 初始化任务持久化管理器: 间隔=300秒, 目录=D:\jsw_code\project\VWED_task\data\task_backups, 最大备份数=5 +2025-07-16 16:24:28,749 - services.enhanced_scheduler.periodic_task_manager - INFO - 初始化定时任务管理器: 检查间隔=5秒 +2025-07-16 16:24:28,750 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器初始化完成 +2025-07-16 16:24:28,750 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 0, 当前工作线程数: 1 +2025-07-16 16:24:28,751 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 1, 当前工作线程数: 2 +2025-07-16 16:24:28,751 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 2, 当前工作线程数: 3 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 3, 当前工作线程数: 4 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 4, 当前工作线程数: 5 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 5, 当前工作线程数: 6 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 6, 当前工作线程数: 7 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 7, 当前工作线程数: 8 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 8, 当前工作线程数: 9 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 9, 当前工作线程数: 10 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 10, 当前工作线程数: 11 +2025-07-16 16:24:28,752 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 11, 当前工作线程数: 12 +2025-07-16 16:24:28,753 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 12, 当前工作线程数: 13 +2025-07-16 16:24:28,753 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 13, 当前工作线程数: 14 +2025-07-16 16:24:28,753 - services.enhanced_scheduler.worker_manager - INFO - 添加工作线程 14, 当前工作线程数: 15 +2025-07-16 16:24:28,753 - services.enhanced_scheduler.worker_manager - INFO - 工作线程管理器启动成功,初始工作线程数: 15 +2025-07-16 16:24:28,753 - services.enhanced_scheduler.task_persistence - INFO - 任务持久化管理器启动成功 +2025-07-16 16:24:28,754 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 启动 +2025-07-16 16:24:28,754 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 启动 +2025-07-16 16:24:28,754 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 启动 +2025-07-16 16:24:28,754 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 启动 +2025-07-16 16:24:28,754 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 启动 +2025-07-16 16:24:28,754 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 启动 +2025-07-16 16:24:28,756 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 启动 +2025-07-16 16:24:28,756 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 启动 +2025-07-16 16:24:28,756 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 启动 +2025-07-16 16:24:28,756 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 启动 +2025-07-16 16:24:28,756 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 启动 +2025-07-16 16:24:28,757 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 启动 +2025-07-16 16:24:28,757 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 启动 +2025-07-16 16:24:28,757 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 启动 +2025-07-16 16:24:28,757 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 启动 +2025-07-16 16:24:28,757 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务启动 +2025-07-16 16:24:28,757 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程启动 +2025-07-16 16:24:28,758 - aiomysql - DEBUG - caching sha2: succeeded by fast path. +2025-07-16 16:24:28,797 - services.enhanced_scheduler.periodic_task_manager - INFO - 已加载 0 个定时任务 +2025-07-16 16:24:28,800 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务管理器启动成功 +2025-07-16 16:24:28,802 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器启动成功,工作线程数: 15 +2025-07-16 16:24:28,804 - app - INFO - 增强版任务调度器已启动,最小工作线程数: 15,最大工作线程数: 30 +2025-07-16 16:24:28,806 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器启动 +2025-07-16 16:24:28,808 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控启动 +2025-07-16 16:24:32,368 - middleware.request_logger - INFO - 请求开始: POST /api/vwed-map-data/push 来自 127.0.0.1 +2025-07-16 16:24:32,370 - services.map_data_service - INFO - 开始增量推送地图数据: 场景ID=1936411520272753371 +2025-07-16 16:24:32,371 - services.map_data_service - INFO - 开始处理库区数据: 数量=2 +2025-07-16 16:24:32,374 - services.map_data_service - INFO - 创建新库区: 一般存储区B +2025-07-16 16:24:32,380 - services.map_data_service - INFO - 创建新库区: 一般存储区C +2025-07-16 16:24:32,380 - services.map_data_service - INFO - 开始处理动作点数据: 数量=4 +2025-07-16 16:24:32,383 - services.map_data_service - INFO - 创建新动作点: STATION-A-001 +2025-07-16 16:24:32,396 - services.map_data_service - DEBUG - 为库位层 36c6b8c1-1a5e-4660-9dbd-355d2f97e1dd 同步了 2 个扩展属性 +2025-07-16 16:24:32,396 - services.map_data_service - DEBUG - 为新库位层 36c6b8c1-1a5e-4660-9dbd-355d2f97e1dd 同步扩展属性成功 +2025-07-16 16:24:32,397 - services.map_data_service - DEBUG - 创建新分层: 1-1 (layer_index=1) +2025-07-16 16:24:32,399 - services.map_data_service - DEBUG - 为库位层 6774fe1a-3094-4990-ba8e-188af1a030e7 同步了 2 个扩展属性 +2025-07-16 16:24:32,399 - services.map_data_service - DEBUG - 为新库位层 6774fe1a-3094-4990-ba8e-188af1a030e7 同步扩展属性成功 +2025-07-16 16:24:32,399 - services.map_data_service - DEBUG - 创建新分层: 1-2 (layer_index=2) +2025-07-16 16:24:32,399 - services.map_data_service - INFO - 创建新动作点: STATION-B-001 +2025-07-16 16:24:32,401 - services.map_data_service - DEBUG - 为库位层 883fe3a8-2ccc-4dd3-89bc-f584336cc9d5 同步了 2 个扩展属性 +2025-07-16 16:24:32,401 - services.map_data_service - DEBUG - 为新库位层 883fe3a8-2ccc-4dd3-89bc-f584336cc9d5 同步扩展属性成功 +2025-07-16 16:24:32,401 - services.map_data_service - DEBUG - 创建新分层: 2-1 (layer_index=1) +2025-07-16 16:24:32,401 - services.map_data_service - INFO - 创建新动作点: STATION-B-004 +2025-07-16 16:24:32,403 - services.map_data_service - DEBUG - 为库位层 3f0c8ef7-c6ca-4e43-b987-c8fee6c9f0a1 同步了 2 个扩展属性 +2025-07-16 16:24:32,403 - services.map_data_service - DEBUG - 为新库位层 3f0c8ef7-c6ca-4e43-b987-c8fee6c9f0a1 同步扩展属性成功 +2025-07-16 16:24:32,403 - services.map_data_service - DEBUG - 创建新分层: 4-1 (layer_index=1) +2025-07-16 16:24:32,405 - services.map_data_service - DEBUG - 为库位层 a9ae7ba3-1286-418b-9120-e6c762ce3aa0 同步了 2 个扩展属性 +2025-07-16 16:24:32,405 - services.map_data_service - DEBUG - 为新库位层 a9ae7ba3-1286-418b-9120-e6c762ce3aa0 同步扩展属性成功 +2025-07-16 16:24:32,405 - services.map_data_service - DEBUG - 创建新分层: 4-2 (layer_index=2) +2025-07-16 16:24:32,406 - services.map_data_service - DEBUG - 为库位层 bc459441-25c8-424a-a9bd-aa3cd641578d 同步了 2 个扩展属性 +2025-07-16 16:24:32,406 - services.map_data_service - DEBUG - 为新库位层 bc459441-25c8-424a-a9bd-aa3cd641578d 同步扩展属性成功 +2025-07-16 16:24:32,406 - services.map_data_service - DEBUG - 创建新分层: 4-3 (layer_index=3) +2025-07-16 16:24:32,408 - services.map_data_service - INFO - 创建新动作点: STATION-B-003 +2025-07-16 16:24:32,409 - services.map_data_service - DEBUG - 为库位层 f0d261aa-513e-4c25-ba71-468cb9124026 同步了 2 个扩展属性 +2025-07-16 16:24:32,409 - services.map_data_service - DEBUG - 为新库位层 f0d261aa-513e-4c25-ba71-468cb9124026 同步扩展属性成功 +2025-07-16 16:24:32,409 - services.map_data_service - DEBUG - 创建新分层: 3-1 (layer_index=1) +2025-07-16 16:24:32,423 - services.map_data_service - INFO - 地图数据推送成功: 场景ID=1936411520272753371, 库区(新增=2,更新=0), 动作点(新增=4,更新=0), 分层(新增=7,更新=0) +2025-07-16 16:24:32,428 - middleware.request_logger - INFO - 请求完成: POST /api/vwed-map-data/push 状态码: 200 耗时: 0.0597秒 +2025-07-16 16:27:12,217 - middleware.request_logger - INFO - 请求开始: GET /api/vwed-operate-point/4-1 来自 127.0.0.1 +2025-07-16 16:27:12,230 - middleware.request_logger - INFO - 请求完成: GET /api/vwed-operate-point/4-1 状态码: 200 耗时: 0.0128秒 +2025-07-16 16:27:21,455 - app - INFO - 应用程序关闭中... +2025-07-16 16:27:21,456 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控被取消 +2025-07-16 16:27:21,456 - services.enhanced_scheduler.task_scheduler - INFO - 任务监控结束 +2025-07-16 16:27:21,457 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器被取消 +2025-07-16 16:27:21,457 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务执行器结束 +2025-07-16 16:27:21,458 - services.enhanced_scheduler.periodic_task_manager - INFO - 定时任务管理器已停止 +2025-07-16 16:27:21,458 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程被取消 +2025-07-16 16:27:21,459 - services.enhanced_scheduler.task_persistence - INFO - 备份工作线程结束 +2025-07-16 16:27:21,459 - services.enhanced_scheduler.task_persistence - INFO - 任务持久化管理器已停止 +2025-07-16 16:27:21,459 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务被取消 +2025-07-16 16:27:21,460 - services.enhanced_scheduler.worker_manager - INFO - 工作线程监控任务结束 +2025-07-16 16:27:21,460 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 被取消 +2025-07-16 16:27:21,461 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 0 结束 +2025-07-16 16:27:21,461 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 0, 当前工作线程数: 14 +2025-07-16 16:27:21,462 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 被取消 +2025-07-16 16:27:21,462 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 1 结束 +2025-07-16 16:27:21,463 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 1, 当前工作线程数: 13 +2025-07-16 16:27:21,463 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 被取消 +2025-07-16 16:27:21,463 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 2 结束 +2025-07-16 16:27:21,464 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 2, 当前工作线程数: 12 +2025-07-16 16:27:21,464 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 被取消 +2025-07-16 16:27:21,465 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 3 结束 +2025-07-16 16:27:21,465 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 3, 当前工作线程数: 11 +2025-07-16 16:27:21,466 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 被取消 +2025-07-16 16:27:21,466 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 4 结束 +2025-07-16 16:27:21,466 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 4, 当前工作线程数: 10 +2025-07-16 16:27:21,467 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 被取消 +2025-07-16 16:27:21,467 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 5 结束 +2025-07-16 16:27:21,468 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 5, 当前工作线程数: 9 +2025-07-16 16:27:21,469 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 被取消 +2025-07-16 16:27:21,470 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 6 结束 +2025-07-16 16:27:21,470 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 6, 当前工作线程数: 8 +2025-07-16 16:27:21,470 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 被取消 +2025-07-16 16:27:21,471 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 7 结束 +2025-07-16 16:27:21,471 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 7, 当前工作线程数: 7 +2025-07-16 16:27:21,472 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 被取消 +2025-07-16 16:27:21,472 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 8 结束 +2025-07-16 16:27:21,473 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 8, 当前工作线程数: 6 +2025-07-16 16:27:21,473 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 被取消 +2025-07-16 16:27:21,473 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 9 结束 +2025-07-16 16:27:21,474 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 9, 当前工作线程数: 5 +2025-07-16 16:27:21,474 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 被取消 +2025-07-16 16:27:21,475 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 10 结束 +2025-07-16 16:27:21,475 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 10, 当前工作线程数: 4 +2025-07-16 16:27:21,476 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 被取消 +2025-07-16 16:27:21,476 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 11 结束 +2025-07-16 16:27:21,477 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 11, 当前工作线程数: 3 +2025-07-16 16:27:21,478 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 被取消 +2025-07-16 16:27:21,478 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 12 结束 +2025-07-16 16:27:21,478 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 12, 当前工作线程数: 2 +2025-07-16 16:27:21,479 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 被取消 +2025-07-16 16:27:21,479 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 13 结束 +2025-07-16 16:27:21,480 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 13, 当前工作线程数: 1 +2025-07-16 16:27:21,480 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 被取消 +2025-07-16 16:27:21,480 - services.enhanced_scheduler.task_scheduler - INFO - 工作线程 14 结束 +2025-07-16 16:27:21,481 - services.enhanced_scheduler.worker_manager - INFO - 移除工作线程 14, 当前工作线程数: 0 +2025-07-16 16:27:21,481 - services.enhanced_scheduler.worker_manager - INFO - 工作线程管理器已停止 +2025-07-16 16:27:21,482 - services.enhanced_scheduler.task_scheduler - INFO - 增强版任务调度器已停止 +2025-07-16 16:27:21,482 - app - INFO - 增强版任务调度器已停止 +2025-07-16 16:27:21,482 - data.session - INFO - 正在关闭异步数据库连接... +2025-07-16 16:27:21,485 - data.session - INFO - 异步数据库连接已关闭 +2025-07-16 16:27:21,485 - data.session - INFO - 正在关闭数据库连接... +2025-07-16 16:27:21,487 - data.session - INFO - 数据库连接已关闭 diff --git a/routes/__pycache__/operate_point_api.cpython-312.pyc b/routes/__pycache__/operate_point_api.cpython-312.pyc index 881ff63..4618579 100644 Binary files a/routes/__pycache__/operate_point_api.cpython-312.pyc and b/routes/__pycache__/operate_point_api.cpython-312.pyc differ diff --git a/routes/model/__pycache__/map_model.cpython-312.pyc b/routes/model/__pycache__/map_model.cpython-312.pyc index 7aab0dd..bfb3280 100644 Binary files a/routes/model/__pycache__/map_model.cpython-312.pyc and b/routes/model/__pycache__/map_model.cpython-312.pyc differ diff --git a/routes/model/__pycache__/operate_point_model.cpython-312.pyc b/routes/model/__pycache__/operate_point_model.cpython-312.pyc index d16a4d3..c91563a 100644 Binary files a/routes/model/__pycache__/operate_point_model.cpython-312.pyc and b/routes/model/__pycache__/operate_point_model.cpython-312.pyc differ diff --git a/routes/model/map_model.py b/routes/model/map_model.py index 084ba4c..b56dc6a 100644 --- a/routes/model/map_model.py +++ b/routes/model/map_model.py @@ -30,7 +30,6 @@ class OperatePointLayerData(BaseModel): class OperatePointData(BaseModel): """动作点数据""" station_name: str = Field(..., description="动作站点名称") - storage_location_name: str = Field(..., description="库位名称") area_name: Optional[str] = Field(None, description="所属库区名称") max_layers: int = Field(1, ge=1, description="最大层数") position_x: Optional[int] = Field(None, description="X坐标") @@ -39,7 +38,7 @@ class OperatePointData(BaseModel): content: Optional[str] = Field("", description="内容") tags: Optional[str] = Field("", description="标签") description: Optional[str] = Field(None, description="动作点描述") - layers: Optional[List[OperatePointLayerData]] = Field(None, description="分层数据") + layers: Optional[List[OperatePointLayerData]] = Field(None, description="库位名称") @validator('layers') def validate_layers(cls, v, values): @@ -85,10 +84,6 @@ class MapDataPushRequest(BaseModel): if len(station_names) != len(set(station_names)): raise ValueError("动作站点名称不能重复") - # 检查库位名称是否重复 - storage_location_names = [point.storage_location_name for point in v] - if len(storage_location_names) != len(set(storage_location_names)): - raise ValueError("库位名称不能重复") return v diff --git a/routes/model/operate_point_model.py b/routes/model/operate_point_model.py index 63b21e9..328df2e 100644 --- a/routes/model/operate_point_model.py +++ b/routes/model/operate_point_model.py @@ -94,7 +94,6 @@ class StorageLocationInfo(BaseModel): # 动作点信息(直接平铺) operate_point_id: Optional[str] = Field(None, description="所属动作点ID") station_name: Optional[str] = Field(None, description="动作站点名称") - storage_location_name: Optional[str] = Field(None, description="库位名称") scene_id: Optional[str] = Field(None, description="场景ID") storage_area_id: Optional[str] = Field(None, description="所属库区ID") storage_area_type: Optional[str] = Field(None, description="库区类型") @@ -112,8 +111,7 @@ class StorageLocationListRequest(BaseModel): scene_id: Optional[str] = Field(None, description="场景ID") storage_area_id: Optional[str] = Field(None, description="库区ID") station_name: Optional[str] = Field(None, description="站点名称(支持模糊搜索)") - storage_location_name: Optional[str] = Field(None, description="库位名称(支持模糊搜索)") - layer_name: Optional[str] = Field(None, description="层名称(支持模糊搜索)") + layer_name: Optional[str] = Field(None, description="库位名称(支持模糊搜索)") is_disabled: Optional[bool] = Field(None, description="是否禁用") is_occupied: Optional[bool] = Field(None, description="是否占用") is_locked: Optional[bool] = Field(None, description="是否锁定") diff --git a/routes/operate_point_api.py b/routes/operate_point_api.py index d8c786d..310f988 100644 --- a/routes/operate_point_api.py +++ b/routes/operate_point_api.py @@ -78,7 +78,6 @@ async def get_storage_location_list( scene_id: Optional[str] = Query(None, description="场景ID"), storage_area_id: Optional[str] = Query(None, description="库区ID"), station_name: Optional[str] = Query(None, description="站点名称(支持模糊搜索)"), - storage_location_name: Optional[str] = Query(None, description="库位名称(支持模糊搜索)"), layer_name: Optional[str] = Query(None, description="层名称(支持模糊搜索)"), is_disabled: Optional[bool] = Query(None, description="是否禁用"), is_occupied: Optional[bool] = Query(None, description="是否占用"), @@ -99,7 +98,6 @@ async def get_storage_location_list( - 场景ID:根据场景筛选库位 - 库区ID:根据库区筛选库位 - 站点名称:支持模糊搜索 - - 库位名称:支持模糊搜索 - 层名称:支持模糊搜索 - 是否禁用:筛选禁用/启用的库位 - 是否占用:筛选已占用/空闲的库位 @@ -121,7 +119,6 @@ async def get_storage_location_list( scene_id: 场景ID storage_area_id: 库区ID station_name: 站点名称 - storage_location_name: 库位名称 layer_name: 层名称 is_disabled: 是否禁用 is_occupied: 是否占用 @@ -142,7 +139,6 @@ async def get_storage_location_list( scene_id=scene_id, storage_area_id=storage_area_id, station_name=station_name, - storage_location_name=storage_location_name, layer_name=layer_name, is_disabled=is_disabled, is_occupied=is_occupied, diff --git a/services/__pycache__/map_data_service.cpython-312.pyc b/services/__pycache__/map_data_service.cpython-312.pyc index 5cc9219..932b1a7 100644 Binary files a/services/__pycache__/map_data_service.cpython-312.pyc and b/services/__pycache__/map_data_service.cpython-312.pyc differ diff --git a/services/__pycache__/operate_point_service.cpython-312.pyc b/services/__pycache__/operate_point_service.cpython-312.pyc index 4997eea..24fc852 100644 Binary files a/services/__pycache__/operate_point_service.cpython-312.pyc and b/services/__pycache__/operate_point_service.cpython-312.pyc differ diff --git a/services/execution/handlers/__pycache__/robot_scheduling.cpython-312.pyc b/services/execution/handlers/__pycache__/robot_scheduling.cpython-312.pyc index a229e66..94d44a2 100644 Binary files a/services/execution/handlers/__pycache__/robot_scheduling.cpython-312.pyc and b/services/execution/handlers/__pycache__/robot_scheduling.cpython-312.pyc differ diff --git a/services/execution/handlers/robot_scheduling.py b/services/execution/handlers/robot_scheduling.py index 57c3751..0e6f875 100644 --- a/services/execution/handlers/robot_scheduling.py +++ b/services/execution/handlers/robot_scheduling.py @@ -193,7 +193,7 @@ class RobotBlockHandler(BlockHandler): """调用外部API的通用方法""" return await call_robot_api(api_name, params) - async def _validate_and_convert_key_route(self, key_route: str, map_id: str) -> tuple[bool, str, str]: + async def _validate_and_convert_key_route(self, key_route: str, map_id: str, flag: bool = False) -> tuple[bool, str, str]: """ 校验并转换keyRoute参数 @@ -240,7 +240,8 @@ class RobotBlockHandler(BlockHandler): station_name = operate_point_layer.station_name logger.info(f"keyRoute '{key_route}' 识别为库位,对应的动作点: {station_name},场景ID: {map_id}") return True, station_name, "" - + if flag: + return True, key_route, "" # 都不匹配,返回错误 error_msg = f"keyRoute '{key_route}' 在场景 {map_id} 中既不是有效的动作点名称也不是有效的库位名称" logger.error(error_msg) @@ -745,7 +746,7 @@ class SelectAgvBlockHandler(RobotBlockHandler): # 校验并转换keyRoute参数 # print(f"input_params >>>>>>>>>>>>>>>>>>>>>>>>>>>> key_route: {key_route}, map_id: {map_id}") - is_valid, key_station_name, error_msg = await self._validate_and_convert_key_route(key_route, map_id) + is_valid, key_station_name, error_msg = await self._validate_and_convert_key_route(key_route, map_id, flag=True) # print(f"output_params >>>>>>>>>>>>>>>>>>>>>>>>>>>> key_station_name: {key_station_name}, error_msg: {error_msg}") if not is_valid: result = { diff --git a/services/map_data_service.py b/services/map_data_service.py index ea8ce00..ebc3557 100644 --- a/services/map_data_service.py +++ b/services/map_data_service.py @@ -76,14 +76,8 @@ class MapDataService: duplicate_stations.append(point_data.station_name) logger.warning(f"发现在请求中重复的站点名称: {point_data.station_name}") continue - - if point_data.storage_location_name in seen_location_names: - duplicate_stations.append(f"{point_data.station_name}(库位名重复)") - logger.warning(f"发现在请求中重复的库位名称: {point_data.storage_location_name}") - continue - + seen_station_names.add(point_data.station_name) - seen_location_names.add(point_data.storage_location_name) valid_operate_points.append(point_data) # 处理动作点数据 - 增量更新 @@ -232,7 +226,6 @@ class MapDataService: if existing_point: # 更新现有动作点 - existing_point.storage_location_name = point_data.storage_location_name existing_point.storage_area_id = storage_area.id if storage_area else None existing_point.storage_area_type = storage_area.area_type if storage_area else None existing_point.area_name = point_data.area_name @@ -252,9 +245,8 @@ class MapDataService: new_point = OperatePoint( id=str(uuid.uuid4()), station_name=point_data.station_name, - storage_location_name=point_data.storage_location_name, scene_id=scene_id, - storage_area_id=storage_area.id if storage_area else None, + # storage_area_id=storage_area.id if storage_area else None, storage_area_type=storage_area.area_type if storage_area else None, area_name=point_data.area_name, max_layers=point_data.max_layers, @@ -321,7 +313,6 @@ class MapDataService: id=str(uuid.uuid4()), operate_point_id=operate_point.id, station_name=operate_point.station_name, - storage_location_name=operate_point.storage_location_name, area_name=operate_point.area_name, scene_id=operate_point.scene_id, layer_index=layer_index, diff --git a/services/operate_point_service.py b/services/operate_point_service.py index 4621575..c125d97 100644 --- a/services/operate_point_service.py +++ b/services/operate_point_service.py @@ -60,11 +60,8 @@ class OperatePointService: if request.station_name: query = query.filter(OperatePointLayer.station_name.like(f"%{request.station_name}%")) + # 库位名称模糊搜索 - if request.storage_location_name: - query = query.filter(OperatePointLayer.storage_location_name.like(f"%{request.storage_location_name}%")) - - # 层名称模糊搜索 if request.layer_name: query = query.filter(OperatePointLayer.layer_name.like(f"%{request.layer_name}%")) @@ -161,7 +158,6 @@ class OperatePointService: if include_operate_point_info and layer.operate_point: storage_location_info.operate_point_id = layer.operate_point.id storage_location_info.station_name = layer.operate_point.station_name - storage_location_info.storage_location_name = layer.operate_point.storage_location_name storage_location_info.scene_id = layer.operate_point.scene_id storage_location_info.storage_area_id = layer.operate_point.storage_area_id storage_location_info.storage_area_type = layer.operate_point.storage_area_type.value if layer.operate_point.storage_area_type else None @@ -1068,7 +1064,6 @@ class OperatePointService: operate_point_info = { "id": layer.operate_point.id, "station_name": layer.operate_point.station_name, - "storage_location_name": layer.operate_point.storage_location_name, "scene_id": layer.operate_point.scene_id, "storage_area_id": layer.operate_point.storage_area_id, "storage_area_type": layer.operate_point.storage_area_type.value if layer.operate_point.storage_area_type else None,