Home - nshaibu/volnux GitHub Wiki

Welcome to the Volnux wiki!

Introduction

Simplify complex process automation with a flexible, high-performance framework.

This library tackles the challenges of building reliable, scalable workflows by providing a clear separation between coordination and execution. It uses a declarative DSL, Pointy-Lang, to model your pipelines while managing the underlying complexity of concurrency, state, and task dependencies.

Build resilient automation that can handle anything from simple data processing to distributed, event-driven systems.

Features

  • Pointy-Lang DSL: Define task dependencies, conditional logic, and parallel execution using an intuitive, graph-based syntax.
  • Hybrid Concurrency: Leverage asyncio for non-blocking I/O and multiprocessing for true parallel execution of CPU-bound tasks.
  • Distributed Processing: Supports remote task execution and manages state across multiple processes with minimal overhead.
  • Extensible Architecture: Easily integrate custom event logic, task executors, and signals to fit any use case.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ExecutionCoordinator                          β”‚
β”‚  β€’ Lifecycle management (setup, run, error handling, cleanup)   β”‚
β”‚  β€’ Timeout enforcement                                           β”‚
β”‚  β€’ Result processing                                             β”‚
β”‚  β€’ State management                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
                 β”‚ dispatch execution context
                 β”‚ (state + task profiles)
                 β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       Flow Engine                                β”‚
β”‚  β€’ setup_execution_flow() determines flow type                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                            β”‚
         β”‚ is_multitask()?           β”‚
         β–Ό                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ParallelFlow   β”‚          β”‚   SingleFlow    β”‚
β”‚                 β”‚          β”‚                 β”‚
β”‚ β€’ Multiple      β”‚          β”‚ β€’ Single event  β”‚
β”‚   events        β”‚          β”‚   execution     β”‚
β”‚ β€’ Concurrent    β”‚          β”‚                 β”‚
β”‚   execution     β”‚          β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                            β”‚
         β”‚ both submit to             β”‚
         β–Ό                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Executor Interface                             β”‚
β”‚                (concurrent.futures.Executor)                     β”‚
β””β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    β”‚             β”‚             β”‚             β”‚
    β–Ό             β–Ό             β–Ό             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Default β”‚ β”‚  Thread  β”‚ β”‚ Process  β”‚ β”‚ Remote Executors β”‚
β”‚Executor β”‚ β”‚   Pool   β”‚ β”‚   Pool   β”‚ β”‚ (gRPC, RPC, etc) β”‚
β”‚         β”‚ β”‚          β”‚ β”‚          β”‚ β”‚                  β”‚
β”‚ Same    β”‚ β”‚ Thread-  β”‚ β”‚ Process- β”‚ β”‚ Distributed      β”‚
β”‚ thread  β”‚ β”‚ based    β”‚ β”‚ based    β”‚ β”‚ execution        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β”‚ managed by
                               β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  VolnuxPoolManager       β”‚
                    β”‚  (Singleton)             β”‚
                    β”‚                          β”‚
                    β”‚  β€’ Lifecycle management  β”‚
                    β”‚  β€’ Context tracking      β”‚
                    β”‚  β€’ Worker cap (fork bomb β”‚
                    β”‚    prevention)           β”‚
                    β”‚  β€’ Multi-backend support β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜