This project implements a flexible and efficient task scheduling system in Python. It's designed to handle various types of tasks, manage their execution, and provide a robust framework for complex task pipelines.
- Modular Architecture: The system is built with a modular design, allowing easy extension and customization.
- Multiple Task Types: Supports different task types, including file operations and HTTP requests.
- Context Management: Provides a context system for sharing data between tasks and tracking execution state.
- State Persistence: Implements a file-based state manager for reliable task state storage and recovery.
- Asynchronous Execution: Uses Python generators for non-blocking task execution.
- Priority Scheduling: Tasks can be assigned priorities for optimized execution order.
- Dependency Management: Supports task dependencies, ensuring proper execution order in complex workflows.
- Error Handling and Retries: Includes built-in error handling and configurable retry mechanisms.
- Extensible Task Registry: Allows easy registration and creation of new task types.
# clone the repository
git clone https://github.com/agredyaev/async-python-sprint-2.git
cd async-python-sprint-2
# setup the environment
make setup
# activate the virtual environment
. ./.venv/bin/activate
# run the app
make run
# run the tests
make test