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)






