Cron job storage, execution, and result tracking built on the Tigrbl engine.
Project description
Tigrbl API Cron ⏰
A lightweight Tigrbl application that stores cron schedules, exposes CRUD APIs, and runs registered jobs while capturing their execution results.
✨ Features
- 🗄️ Persists cron jobs as first-class
CronJobrows with default CRUD verbs. - 🪪 Tracks validity windows, timestamps, and last execution metadata for each schedule.
- 📜 Records every execution in the
CronJobResulttable for full observability. - ⚙️ Provides a simple registry and executor to run due jobs and persist their outputs or failures.
- 🚀 Ships with a
ASGIapplication constructor for rapid deployment.
📦 Installation
Using uv
uv add tigrbl_api_cron
Using pip
pip install tigrbl_api_cron
🚀 Quick Start
import asyncio
from datetime import datetime, timezone
from tigrbl_api_cron import (
CronJob,
build_app,
execute_due_jobs,
register_cron_job,
)
# 1. Build and initialize the API (SQLite in-memory by default)
app = build_app()
asyncio.run(app.initialize())
# 2. Register a callable that will be invoked when its cron job is due
@register_cron_job("demo.pkg")
async def demo_job(*, job: CronJob, session, scheduled_for, now):
return {"ran_at": now.isoformat()}
# 3. Create a cron job entry (via ORM, REST, or RPC)
async def seed_job():
async with app.engine.asession() as session:
job = CronJob(pkg_uid="demo.pkg", cron_expression="*/5 * * * *")
session.add(job)
await session.commit()
asyncio.run(seed_job())
# 4. Run due jobs and capture their results
asyncio.run(execute_due_jobs(app, now=datetime.now(timezone.utc)))
🧪 Executing Jobs
- Register handlers with
register_cron_job(pkg_uid). - Call
execute_due_jobs(app, now=...)from a scheduler or worker process. - Results are written to the
CronJobResulttable and surfaced via the REST API.
📄 License
This project is licensed under the terms of the Apache 2.0 license.
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 tigrbl_api_cron-0.1.2.dev9.tar.gz.
File metadata
- Download URL: tigrbl_api_cron-0.1.2.dev9.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55cd1edf0a92f0195b01e68834ccb2cf8eb8e2924fe7d5c2490df6ae92e07f5e
|
|
| MD5 |
8776609075979a671a975b16b986fb62
|
|
| BLAKE2b-256 |
15add59beae7174499406f7e3134ff16ad6a836feebc947f8475243e8693840c
|
File details
Details for the file tigrbl_api_cron-0.1.2.dev9-py3-none-any.whl.
File metadata
- Download URL: tigrbl_api_cron-0.1.2.dev9-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71bab8f87531887a433bcce93d24933e8ecfed96bea9926f7c6db7bdb2ca273a
|
|
| MD5 |
00102b15983fc6a60a3874e2d9790049
|
|
| BLAKE2b-256 |
ee70930c7a22960516f42b4d65ac9469d9e5e23cb437162dac03f32b10652257
|