在我的應用程序中,我實現了由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