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
tigrbl_api_cron-0.1.2.tar.gz
(10.5 kB
view details)
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.tar.gz.
File metadata
- Download URL: tigrbl_api_cron-0.1.2.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","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 |
45ed96a0cf2f44b40d0f0c66e9218b7a476203c346e73fa0e283edcf812a8d96
|
|
| MD5 |
02f250b02de18339bcb1a606f926ef31
|
|
| BLAKE2b-256 |
b21f2d1998d6c38feb840e869179ce1b90a26f35fb7a9e0fcf55324f808d314e
|
File details
Details for the file tigrbl_api_cron-0.1.2-py3-none-any.whl.
File metadata
- Download URL: tigrbl_api_cron-0.1.2-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","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 |
296536557759ff2e547fdfb9acdea81a796445dc7e9bdf4c7fa3b7204cc77f6e
|
|
| MD5 |
645ed84f36ee5f1e5873d1828621ee74
|
|
| BLAKE2b-256 |
4745d485770f52770ca2bf21739a6f00c39e66f1fea2e54ad9010a7512d9e035
|