General-purpose job scheduling service for the LlamaAI Ecosystem.
Project description
llama-scheduler
Llama Scheduler (llama-scheduler) provides job scheduling capabilities within the LlamaSearch AI ecosystem. It allows defining, scheduling, and managing recurring or one-off tasks.
Key Features
- Job Scheduling: Core engine for scheduling tasks based on time or events (
scheduler.py). - Job Definitions: Allows defining the functions or tasks to be executed (
job_functions.py). - Configuration Schema: Defines the structure for configuring jobs and schedules (
config_schema.py). - Command-Line Interface: Provides tools to manage schedules and jobs via CLI (
cli.py). - Core Module: Manages the scheduler lifecycle and job execution (
core.py). - Configurable: Allows defining schedules, job parameters, and backend settings (
config.py).
Installation
pip install llama-scheduler
# Or install directly from GitHub for the latest version:
# pip install git+https://github.com/llamasearchai/llama-scheduler.git
Usage
Command-Line Interface (CLI)
(CLI usage examples for adding, removing, and listing scheduled jobs will be added here.)
llama-scheduler add-job --name "daily-report" --schedule "0 8 * * *" --task "generate_report"
llama-scheduler list-jobs
Python Client / Embedding
(Python usage examples for programmatically scheduling jobs will be added here.)
# Placeholder for Python client usage
# from llama_scheduler import Scheduler, Job
# from my_tasks import backup_database # Assuming backup_database is in job_functions or imported
# scheduler = Scheduler(config_path="config.yaml")
# # Define a job
# backup_job = Job(
# name="database_backup",
# func=backup_database,
# trigger="cron",
# hour=2, # Run at 2 AM daily
# args=["/path/to/backup/dir"]
# )
# # Add and start the job
# scheduler.add_job(backup_job)
# scheduler.start()
Architecture Overview
graph TD
A[User / CLI (cli.py)] --> B{Core Module (core.py)};
B --> C{Scheduler Engine (scheduler.py)};
C -- Loads Job Definitions --> D[Job Functions (job_functions.py)];
C -- Reads Schedule --> E{Job Store / Schedule DB};
C -- Triggers Job --> F[Job Executor];
F -- Executes --> D;
G[Configuration (config.py, config_schema.py)] -- Configures --> B;
G -- Configures --> C;
G -- Defines Schema for --> E;
style C fill:#f9f,stroke:#333,stroke-width:2px
style E fill:#ccf,stroke:#333,stroke-width:1px
- Interface: Users interact via the CLI or potentially a programmatic API managed by the Core Module.
- Core Module: Handles requests and controls the scheduler engine.
- Scheduler Engine: The heart of the system, responsible for tracking time/events and triggering jobs based on the schedule.
- Job Store: Stores the defined jobs and their schedules (could be in memory, a file, or a database).
- Job Functions: Contains the actual Python code that gets executed for each job.
- Executor: The component responsible for running the job function when triggered.
- Configuration: Defines the schedule, job parameters, backend storage, etc.
Configuration
(Details on configuring job schedules (cron syntax, intervals), job parameters, backend persistence, etc., will be added here.)
Development
Setup
# Clone the repository
git clone https://github.com/llamasearchai/llama-scheduler.git
cd llama-scheduler
# Install in editable mode with development dependencies
pip install -e ".[dev]"
Testing
pytest tests/
Contributing
Contributions are welcome! Please refer to CONTRIBUTING.md and submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llama_scheduler-0.1.0.tar.gz.
File metadata
- Download URL: llama_scheduler-0.1.0.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6de5179677e3a1d03dd98caa35a162efb6525f43c6c9e42d662a413f0628ec3
|
|
| MD5 |
c0e930d6ed621de163c9caaa1ee7823c
|
|
| BLAKE2b-256 |
b15b167b06f699c3143b3228a03b3a6b5617b6cfa1f0749a9bafb08dbdf55a80
|
File details
Details for the file llama_scheduler-0.1.0-py3-none-any.whl.
File metadata
- Download URL: llama_scheduler-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6348b999e98aed3fb1fc9bf8ef413a8f1604f6575b865290975b961264a7548
|
|
| MD5 |
97e0b47e48e55a516e6a5e4a62627fbe
|
|
| BLAKE2b-256 |
56d54074ecfde67d85bcb96ac470bb1c47de714e14a38b5ed11b872d3d58fa98
|