Сегодня я хочу выложить в открытый доступ свою библиотеку на Scala. Библиотека реализует Directed Acyclic Graph (DAG) для выполнения задач внутри одного приложения (на замену Airflow и подобных не претендую :-)) и позволяет определять задачи с зависимостями, выполнять их в правильном порядке и обрабатывать исключения, которые могут возникнуть в процессе выполнения. Библиотека писалась через призму моих личных и профессиональных потребностей, поэтому не претендует на покрытие всех возможных кейсов, встречающихся в разработке вообще.
Use case:
Иногда возникает необходимость выполнять взаимосвязанные задачи/функции/классы в рамках одного приложения, где эти задачи могут быть частично параллелизованы, то есть их можно «собрать» в DAG для более эффективного использования ресурсов и повышения общей производительности. Например при обрабтке/загрузке данных или в event-driven приложении.
Особенности:
-
Управление задачами: Добавление задач с указанными зависимостями.
-
Гибкость: Выполенение всех или только некоторых задач (с сохранением зависимостей)
-
Обработка ошибок: Встроенная обработка ошибок с передачей исключений «наверх» для упрощенного их анализа.
-
Результаты выполнения задач: Возможность получения результата выполнения задач для дальнейшего их использования программным кодом.
Код, документация и инструкция по импорту и использованию доступны на GitHub.
Буду рад любым отзывам и предложениям по улучшению. Также не стесняйтесь задавать вопросы и заводить issue 🙂