diff --git a/main.py b/main.py index 8d859e5..f7faf12 100644 --- a/main.py +++ b/main.py @@ -8,8 +8,7 @@ from typing import Dict, Any, Optional, List from fastapi import FastAPI, HTTPException, Depends from public_function.public_func import read_config -from model.model import GoodsInfo, DataReceive -from model.model import AccountCreate, AccountUpdate, DeviceResetData +from model.model import GoodsInfo, DataReceive, AccountCreate, AccountUpdate, DeviceResetData app = FastAPI() @@ -22,7 +21,7 @@ def get_config(): from public_function.public_func import read_config return read_config(config_path) except ImportError: - logger.warning("未找到read_config函数,使用默认配置") + print(f"未找到read_config函数,使用默认配置") return {'host': 'localhost', 'port': 3306, 'user': 'root', 'password': 'password', 'db': 'test_db', 'max_overflow': 10} @@ -33,7 +32,7 @@ def get_account_manager(): from account_management.deal_account import DealAccount return DealAccount(config) except ImportError: - logger.warning("未找到DealAccount类,返回模拟实例") + print(f"未找到DealAccount类,返回模拟实例") return None @@ -44,7 +43,18 @@ def get_task_manager(): from task_management.all_task_management import AllTask return AllTask(config) except ImportError: - logger.warning("未找到AllTask类,返回模拟实例") + print(f"未找到AllTask类,返回模拟实例") + return None + + +def get_reset_manager(): + """设备重置管理器""" + config = get_config() + try: + from task_management.all_task_management import AllTask + return AllTask(config) + except ImportError: + print("未找到 类,返回模拟实例") return None @@ -79,7 +89,6 @@ async def add_account(account_data: AccountCreate, account_manager: Any = Depend - **app_name**: 应用名称 """ try: - print(account_data.model_dump()) # 这里应该调用实际的添加账号方法 result = await account_manager.add_account([account_data.model_dump()]) if result: @@ -125,7 +134,7 @@ async def receive_data(task_data: DataReceive, task_manager: Any = Depends(get_t return {"code": 200, "message": "数据保存成功", "data": result} raise HTTPException(status_code=404, detail="抓取商品数据失败,请重新尝试") except Exception as e: - print(f": {e}") + print(f"{get_local_time()},商品数据处理失败,失败原因: {e}") raise HTTPException(status_code=500, detail="获取数据失败;失败原因{}".format(e)) @@ -143,20 +152,20 @@ async def get_goods_info(task_data: GoodsInfo, task_manager: Any = Depends(get_t raise HTTPException(status_code=500, detail="获取数据失败;失败原因{}".format(e)) -# @app.get("/device_reset", summary="设备重置") -# async def device_reset(task_data: GoodsInfo, reset_manager: Any = Depends(get_reset_manager)): -# """设备重置接口""" -# try: -# params = task_data.model_dump() -# params['task_id'] = uuid.uuid4().hex -# # 将任务记录到mysql -# # result = await task_manager.task_distribution(params) -# # if result: -# # return {"code": 200, "message": "", "data": result} -# raise HTTPException(status_code=404, detail="抓取商品数据失败,请重新尝试") -# except Exception as e: -# print(f": {e}") -# raise HTTPException(status_code=500, detail="获取数据失败;失败原因{}".format(e)) +@app.get("/device_reset", summary="设备重置") +async def device_reset(task_data: DeviceResetData, reset_manager: Any = Depends(get_reset_manager)): + """设备重置接口""" + try: + params = task_data.model_dump() + params['task_id'] = uuid.uuid4().hex + # 将任务记录到mysql + result = await reset_manager.task_distribution(params) + if result: + return {"code": 200, "message": "", "data": result} + raise HTTPException(status_code=404, detail="抓取商品数据失败,请重新尝试") + except Exception as e: + print(f"设备重置失败,失败原因: {e}") + raise HTTPException(status_code=500, detail="获取数据失败;失败原因{}".format(e)) if __name__ == '__main__': diff --git a/public_function/public_func.py b/public_function/public_func.py index b31f3cf..1f0d8d7 100644 --- a/public_function/public_func.py +++ b/public_function/public_func.py @@ -1,6 +1,28 @@ # -*- coding: utf-8 -*- import yaml +import logging from pathlib import Path +from datetime import datetime +from logging.handlers import TimedRotatingFileHandler + + +def create_logger(): + now_date = datetime.now().strftime('%Y%m%d') + log_filename = os.path.join(Path(__file__).resolve().parent.parent, f'logs/crawler_task_{now_date}.log') + path = Path(log_filename).resolve().parent + os.makedirs(path, exist_ok=True) + + logger = logging.getLogger("emu_dsl") + # 防止重复添加handler + if logger.handlers: + return logger + + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + file_handler = TimedRotatingFileHandler(log_filename, when='midnight', backupCount=7, encoding='utf-8') + file_handler.setFormatter(formatter) + logger.addHandler(file_handler) + logger.setLevel(logging.INFO) + return logger def read_config(path):