I built an embedded scheduler in Rust because I was tired of adding Redis just to run a background job

Published: (June 10, 2026 at 05:53 PM EDT)
1 min read
Source: Dev.to

Source: Dev.to

nexora

            Every time I needed to run a background job in a Python app, the answer was always the same: add Redis, add Celery, add a worker process, add a broker.

Just to send an email every morning.

So I built Kron. It runs embedded inside your Python process — no Redis, no broker, no daemon. Timers persist across restarts. If the process crashes, Kron recovers everything from a local append-only log.

pythonimport kron

kron.schedule(“email_digest”, cron=“0 8 * * *”, fn=send_digest)

kron.schedule(“cleanup”, every=“30m”, fn=cleanup_temp_files)

kron.start(data_dir=“.kron”)

That’s it. No infrastructure.

You can inspect everything from the CLI:

bashkron job list

kron job status email_digest

kron job history email_digest

The core is Rust. Python bindings via PyO3. It also has a distributed server mode backed by OpenRaft with worker leases, fencing tokens, and a tamper-evident audit log with SHA256 hash chaining.

pip install kron-scheduler

GitHub: https://github.com/BuildByNexora/Kron

Still alpha — but already useful for small services, local agents, and edge devices.

0 views
Back to Blog

Related posts

Read more »