You need to enable JavaScript to run this app. 运行时动态构建执行步骤的设计模式及Python类架构优化问询
优惠活动
大模型
产品
解决方案
定价
更多

运行时动态构建执行步骤的设计模式及Python类架构优化问询

解决方案核心思路

将execute的执行流程从硬编码方法转为可配置的流程模板,完全解耦步骤定义和执行流程编排,不需要每次新增执行链路都修改Operator类和主调用逻辑。

具体实现步骤

  1. 抽离执行流程配置,避免硬编码
    将所有配置参数对应的step执行序列独立存放,新增执行流仅需修改配置,无需改动业务代码:
# 可单独存放于配置模块中,和业务逻辑完全拆分
EXECUTE_FLOW_CONFIG = {
    "param_1": ["step_1", "step_5", "step_9", "step_2"],
    "param_m": ["step_7", "step_6"],
    # 新增执行流程仅需在这里加对应配置项即可
}
  1. 改造Operator类,新增通用执行入口
    删除所有硬编码的execute_x方法,统一用通用run方法接收步骤序列动态执行:
class DummyOperator:
    def step_1(self):
        pass
    
    # ... 其余step方法保持原有实现不变
    
    def run(self, step_sequence: list[str]):
        """通用执行入口,按传入的步骤序列依次执行对应方法"""
        for step_name in step_sequence:
            # 动态获取step方法并调用
            step_func = getattr(self, step_name)
            step_func()
  1. 简化主调用逻辑,删除冗长的分支判断
    直接根据配置取值执行,无需每次新增execute方法都修改主逻辑:
# main.py
from xxx import EXECUTE_FLOW_CONFIG

conf_value = get_value_from_config()
obj = DummyOperator()
step_sequence = EXECUTE_FLOW_CONFIG[conf_value]
obj.run(step_sequence)

进阶优化方案

  • 如果step需要传参、包含分支判断逻辑,可将配置项从字符串升级为结构化描述,比如{"step": "step_1", "params": {"timeout": 10}, "condition": "pre_check_pass"},在run方法中对应解析处理即可
  • 可在run方法中增加步骤合法性校验,执行前先判断传入的step是否存在,提前抛出异常避免执行中途失败
  • 同类结构的类可抽离公共基类,将通用执行逻辑、校验逻辑放到基类中,子类仅需实现各自的step方法即可,不用重复开发执行逻辑:
class BaseOperator:
    def run(self, step_sequence: list[str]):
        # 公共执行逻辑、校验逻辑统一放在基类
        for step_name in step_sequence:
            if not hasattr(self, step_name):
                raise ValueError(f"不存在的执行步骤: {step_name}")
            getattr(self, step_name)()

class DummyOperator(BaseOperator):
    # 子类仅需实现业务相关的step方法
    def step_1(self):
        pass
  • 运行时需要动态新增/修改execute流程时,直接修改EXECUTE_FLOW_CONFIG配置即可,配合配置中心可实现热更新,完全不需要改动业务代码。

内容的提问来源于stack exchange,提问作者fo1n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 16:27:04