Schedule tasks that depend on each other completing in order, tracked in MongoDB.
Let backend services call each other's methods over RabbitMQ with retries and a circuit breaker.
Manage shared components like database connections through automatic dependency injection.
Monitor task status and service health from a built-in Flask web dashboard.
| zypgita/astra-flux | strongshuai/proxy-checker | thaolst/tara-bot | |
|---|---|---|---|
| Stars | 49 | 49 | 49 |
| Language | Python | Python | Python |
| Setup difficulty | hard | easy | moderate |
| Complexity | 4/5 | 2/5 | 2/5 |
| Audience | developer | developer | vibe coder |
Figures from each repo's GitHub metadata at analysis time.
Requires MongoDB, Redis, and RabbitMQ all running plus a YAML config before anything works.
AstraFlux is a Python library for building distributed backend services without needing heavy infrastructure tools like Kubernetes or ZooKeeper. It brings together several common backend concerns into a single installable package: task scheduling, remote procedure calls between services, worker process management, and a web dashboard for monitoring. The goal is to provide enterprise-level reliability features with relatively little configuration code. The core of AstraFlux is a dependency injection container called FixtureManager. You register pieces of your application (database connections, configuration values, shared utilities) as named components once, and the framework injects them into functions automatically based on parameter names. Components can be configured to last for the lifetime of the process, until a cache is cleared, or scoped to individual threads. The task scheduling system stores tasks in MongoDB and organizes them using a directed acyclic graph, meaning you can declare that task B depends on task A completing before it starts. Every ten seconds the scheduler checks which tasks are ready to run, respects worker capacity limits tracked in Redis, and dispatches work to RabbitMQ queues. If a parent task fails, the scheduler automatically marks its dependent children as failed. You can submit tasks, stop them, retry failed ones, and create batches of subtasks that track completion together. The RPC system lets one service call a method on another service over RabbitMQ. Calls include configurable timeouts, automatic retries with exponential backoff, and a circuit breaker that stops sending requests to a service that has been failing repeatedly. The circuit breaker recovers after a configurable number of seconds. Connection drops are handled with automatic reconnection. Worker capacity is tracked in Redis. Each worker registers how many tasks it can handle at once, and the scheduler consults this before dispatching new work. A web dashboard built with Flask runs on a configurable port and shows task status, service health, and system activity. The library requires Python 3.9 or later and needs MongoDB, Redis, and RabbitMQ running before you start. Setup involves writing a YAML configuration file with connection details for each service, then defining service and worker classes with specific required class names, and starting the framework with a few function calls.
A Python framework that bundles task scheduling, service-to-service calls, and monitoring for backend systems without Kubernetes.
Mainly Python. The stack also includes Python, MongoDB, Redis.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.