Я посмотрел дальше на Luigi и Airflow и, насколько я мог различить, ни один из них не подходит для модификации под мои нужды. Основная несовместимость заключается в том, что эти инструменты основаны на заранее определенных группах обеспечения доступности баз данных / рабочих процессах. Моя существующая структура работает с созданными и полностью определенными группами обеспечения доступности баз данных, которые обнаруживаются во время выполнения, а не кратко описываются извне - это необходимо, поскольку знание того, завершена ли каждая задача для данного запроса, зависит от многих комбинаций значений параметров, которые определяют выходные данные. этой задачи и используемого вывода всех вышестоящих задач. Под экземпляром я подразумеваю «промежуточные» результаты отдельных прогонов, каждый из которых описывается полным состоянием параметра (значениями переменных), необходимыми для воспроизведения (выдерживающего любой элемент стохастики c) идентичного результата этой задачи.
«Планировщик», который работает с DAG раньше времени, бесполезен.
В целом, большинство существующих структур рабочих процессов, по крайней мере, в python, на которые я смотрел, скорее, предназначены для автоматизации многих Относительно простые задачи в легко масштабируемой и надежной манере с распараллеливанием, с небольшим акцентом на постепенное наращивание более сложных анализов с результатами, которые должны быть повторно использованы, когда это возможно, чтобы связать сложные и дорогостоящие вычислительные задачи, результаты которых, вероятно, могут, в свою очередь, в свою очередь использовать в качестве входных данных для дополнительного непредвиденного анализа.
Я только что открыл рабочий процесс «Префект» этим утром, и заинтригован, чтобы узнать больше - по крайней мере, он явно хорошо финансируется ;-). Мой первоначальный смысл заключается в том, что он может быть менее зависимым от предварительного планирования и, следовательно, более гибким и более легко адаптируемым к моим потребностям, но это всего лишь догадка. Во многих отношениях некоторые из моих более сложных «одиночных» задач могут хорошо подходить, чтобы обернуть весь поток префектов, если они хорошо сыграли вместе. Кажется, мои потребности находятся в дальнем конце спектра глубоко сложных DAG (я не буду пытаться выписать свои!), Не заканчивая последующие добавления.
Я собираюсь поближе познакомиться с Префектом и Луиджи и посмотреть, что я могу позаимствовать, чтобы сделать мой каркас более устойчивым и менее барочным. Или, может быть, я могу добавить слой полного описания данных в Префект ...
ОБНОВЛЕНИЕ - обсуждая с людьми Префекта, ясно, что мне нужно начать с базового Dask и посмотреть, достаточно ли он гибок - возможно, используя Dask с задержкой или фьючерсами. Ясно, что Даск необычен. Graphchain, построенный поверх Dask, является движением в правильном направлении, облегчая постоянное хранение «промежуточного» вывода, вычисленного по «цепочке» зависимостей, идентифицируемой ha sh базы кода и параметров. Довольно близко к тому, что мне нужно, хотя и с более явной обработкой тех параметров, которые детерминистически определяют выходные данные.