В моем приложении я реализовал очень грубый рабочий процесс, состоящий из 5 различных «блоков обработки». Код на данный момент имеет такую структуру:
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, но он не поддерживает должным образом общий объект конфигурации, за исключением передачи его всем рабочим (утомительно).
Примечание: это приложение для библиотеки / командной строки, поэтому веб-решения для рабочих процессов не подходят.
run_process_2
, если еще неrun_process_1
. Это правда? - person Katriel   schedule 09.03.2012