AirFlan
Enterprise-Grade Workflow Orchestration for Python
AirFlan is a lightweight, modular, and robust workflow orchestrator designed for building complex data pipelines with ease. It combines a simple Pythonic API with powerful enterprise features like parallel execution, caching, retries, and a state-of-the-art monitoring dashboard.
Features
- DAG Orchestration: Automatically resolves dependencies and executes tasks in topological order.
- Parallel Execution: True parallel task processing using thread pools.
- Robust Error Handling: Built-in retries, timeouts, and error propagation.
- Smart Caching: Avoid redundant computation with result caching.
- Context Sharing: Thread-safe data passing between tasks.
- Enterprise UI: A professional, minimalist dashboard for real-time monitoring and visualization.
- Modular Architecture: Extensible design with pluggable executors and storage backends.
Installation
-
Clone the repository:
git clone https://github.com/yourusername/airflan.git cd airflan
-
Install dependencies:
pip install -r requirements.txt
Local Development (Editable Install)
If you want to use AirFlan in another project locally without publishing to PyPI:
- Navigate to your other project's directory.
- Install AirFlan in editable mode:
pip install -e /path/to/cloned/airflan
(Replace/path/to/cloned/airflanwith the actual path to this repository)
Quick Start
Define your workflow using the simple decorator API:
from airflan import WorkflowOrchestrator, WorkflowContext
# Initialize
wf = WorkflowOrchestrator(name="data_pipeline")
# Define Tasks
@wf.task(name="extract")
def extract_data():
return [1, 2, 3]
@wf.task(name="process", depends_on=["extract"])
def process_data(context: WorkflowContext):
# Access upstream data or shared context
return "Processed"
# Run
if __name__ == "__main__":
wf.run(parallel=True, enable_ui=True)
Monitoring Dashboard
AirFlan includes a professional real-time monitoring dashboard built with Streamlit.
To launch the UI, simply run your workflow with enable_ui=True. The dashboard provides:
- Interactive DAG: Visualize your workflow structure.
- Real-time Metrics: Track running, completed, and failed tasks.
- Execution Logs: Live stream of task logs.
- Performance Stats: Task duration and status distribution.
Project Structure
AirFlan/
├── airflan/ # Core Library
│ ├── core/ # Task, Scheduler, Executor, Context
│ ├── storage/ # Cache & State Management
│ └── orchestrator.py # Main Entry Point
├── air_flan_ui.py # Monitoring Dashboard
├── demo_workflow.py # Example Enterprise Pipeline
└── requirements.txt # Dependencies
Advanced Usage
Check out docs/how_to.md for detailed guides on:
- Sequential vs. Parallel Execution
- Context Management
- Retry Policies & Timeouts
- Result Caching
License
MIT License
Metadata
Release files for airflan-workflow 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| airflan_workflow-0.1.2.tar.gz | 19.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| airflan_workflow-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.5 kB
Release files / airflan_workflow-0.1.2.tar.gz
| Download URL | airflan_workflow-0.1.2.tar.gz |
|---|---|
| Size | 19.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c3bc08ddd6294bc801e1aeea25410963cd49a580e6e2ffc6008cb868cea1c61
|
|
BLAKE2b-256 checksum How to use checksums |
adb6f86f5577acf6645d3f6e44941c422ff51cf1f7460d953d2a9dc779923be3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / airflan_workflow-0.1.2-py3-none-any.whl
| Download URL | airflan_workflow-0.1.2-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
206e16c8812b0ceca09ed6c33dd9ed8d18412849eebc1219750f54a4242df417
|
|
BLAKE2b-256 checksum How to use checksums |
efeaff53b206c617532063e3d563c1308caa7a09773b6dda8f07e67a899575ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|