在我的应用程序中,我实现了由5个不同“处理单元”组成的非常粗糙的工作流程。目前代码的结构如下:Python:分支工作流程/管道的现有解决方案?
def run(self, result_first_step=None, result_second_step=None):
config = read_workflow_config("config.ini")
if config.first_step:
result_first_step = run_process_1()
if config.second_step and result_first_step is not None:
result_second_step = run_process_2(result_first_step)
else:
raise Exception("Missing required data")
if config.third_step:
result_third_step = run_process_3(result_first_step, result_second_step)
else:
result_third_step = None
collect_results(result_first_step, result_second_step, result_third_step)
等等。代码的工作原理很难维护,而且非常脆弱(处理比这个简单的例子复杂得多)。因此,我一直在考虑采用另一种策略,即制定适当的工作流程:
- 短路:我可以不给任何数据给启动过程或两种不同类型的数据。在后一种情况下,工作流的短路,并跳过一些处理
- 普通的对象:东西一样配置提供给所有单元
- 条件:取决于配置,一些位可以被跳过
是否有一个Python库可用于执行这些类型的工作流程,还是我应该推出自己的?我一直在尝试pyutilib.workflow,但它不能正确地支持一个通用配置对象,而不能将它传递给所有工作者(乏味)。
注意:这是针对库/命令行应用程序的,因此基于Web的工作流程解决方案并不合适。
你有没有试着用搜索引擎这个问题?你发现了什么问题? – Marcin 2012-03-09 17:13:05
你写的方式看起来像'run_process_2',除非你已经有'run_process_1'。真的吗? – katrielalex 2012-03-09 17:13:17
的确,我会调整它以更好地展示我的想法。编辑:更改示例如何可以短路。 – Einar 2012-03-09 17:16:49