Текущий процесс включает около 300 программ и зависимостей, таких как "
Код: Выделить всё
Program 40Эти зависимости отслеживаются вручную. Программисты указывают статус своей программы из этого основного списка для каждого итеративного запуска, и им необходимо координировать свои действия друг с другом, чтобы создать список входных данных для любого данного этапа. Точка начала и остановки для каждого этапа определяется тем, какие входные данные «заморожены», какие программы изменены, какие флаги среды установлены и т. д. Неожиданные побочные эффекты, что неудивительно, довольно распространены, когда программистам не удается обновить входной файл в соответствии с изменениями в их коде.
Я хочу автоматизировать и обновить этот процесс, заменив список ввода вручную на группу DAG, в которой указано, какие программы запускать на данном этапе, и который я могу передать планировщику заданий. Однако мне кажется, что я начинаю с уровня, предшествующего уровню dag, где программа Z на самом деле не заботится о запуске после программы Y , сразу после программы, которая изменяет переменные или артефакты входного набора данных (файлы конфигурации, переменные env, плоский набор данных, файлы журналов и т. д.).
Я думаю, что до тех пор, пока каждый программист точно определяет, какие входные данные нужны конкретной программе X в анализируемом виде, и пока у меня есть начальный линейный список программ (чтобы знать, изменяют ли обе программы X и Y какую-то переменную, какая программа должна запускаться первой), я думаю, что я должен иметь возможность генерировать DAG реальных программ для запуска на любом заданном этапе порядка выполнения. Это также имеет то преимущество, что DAG всегда будет правильным, если входные переменные программы изменяются или какая-то зависимость обновляется так, что она больше не зависит напрямую от предыдущей программы (это случается довольно часто).
Я должен предположить, что это довольно распространенная проблема, поэтому, прежде чем пытаться изобретать заново. колесо: существует ли существующий инструмент, процесс или шаблон проектирования, который пытается решить эту проблему? И в идеале есть ли способ объединить изменения в данных, конфигурациях и коде в виде зависимостей?
Пакет Python под названием Pants показался очень близким к этому, но я не смог его протестировать из-за требований к установке и отсутствия поддержки conda.
Подробнее здесь: https://stackoverflow.com/questions/798 ... data-and-c
Мобильная версия