main:添加核心文件并初始化项目
新增内容: - 创建基础项目结构。 - 添加 `.gitignore` 和 `.dockerignore` 文件。 - 编写 `pyproject.toml` 和依赖文件。 - 添加算法模块及示例算法。 - 实现核心功能模块(日志、错误处理、指标)。 - 添加开发和运行所需的相关脚本文件及文档。
This commit is contained in:
77
src/functional_scaffold/algorithms/base.py
Normal file
77
src/functional_scaffold/algorithms/base.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""算法基类"""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Any, Dict
|
||||
import time
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class BaseAlgorithm(ABC):
|
||||
"""算法基类,所有算法必须继承此类"""
|
||||
|
||||
def __init__(self):
|
||||
self.name = self.__class__.__name__
|
||||
self.version = "1.0.0"
|
||||
|
||||
@abstractmethod
|
||||
def process(self, *args, **kwargs) -> Dict[str, Any]:
|
||||
"""
|
||||
算法处理逻辑,子类必须实现此方法
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: 算法处理结果
|
||||
"""
|
||||
pass
|
||||
|
||||
def execute(self, *args, **kwargs) -> Dict[str, Any]:
|
||||
"""
|
||||
执行算法,包含埋点和错误处理
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: 包含结果和元数据的字典
|
||||
"""
|
||||
from ..core.metrics import algorithm_counter, algorithm_latency
|
||||
|
||||
start_time = time.time()
|
||||
status = "success"
|
||||
|
||||
try:
|
||||
logger.info(f"Starting algorithm: {self.name}")
|
||||
result = self.process(*args, **kwargs)
|
||||
elapsed_time = time.time() - start_time
|
||||
|
||||
logger.info(
|
||||
f"Algorithm {self.name} completed successfully in {elapsed_time:.3f}s"
|
||||
)
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"result": result,
|
||||
"metadata": {
|
||||
"algorithm": self.name,
|
||||
"version": self.version,
|
||||
"elapsed_time": elapsed_time,
|
||||
},
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
status = "error"
|
||||
elapsed_time = time.time() - start_time
|
||||
logger.error(f"Algorithm {self.name} failed: {str(e)}", exc_info=True)
|
||||
|
||||
return {
|
||||
"success": False,
|
||||
"error": str(e),
|
||||
"metadata": {
|
||||
"algorithm": self.name,
|
||||
"version": self.version,
|
||||
"elapsed_time": elapsed_time,
|
||||
},
|
||||
}
|
||||
finally:
|
||||
# 记录算法执行指标
|
||||
elapsed_time = time.time() - start_time
|
||||
algorithm_counter.labels(algorithm=self.name, status=status).inc()
|
||||
algorithm_latency.labels(algorithm=self.name).observe(elapsed_time)
|
||||
Reference in New Issue
Block a user