Welcome to BTU¶
Background Tasks Unleashed (BTU) is a pair of open-source tools for scheduling and running Python background work in Frappe Framework sites:
- BTU Frappe app (Datahenge/btu) — Desk UI, Tasks, Schedules, Logs, Run Later, Configuration.
- BTU Scheduler (Datahenge/btu_scheduler_py) — cron engine that reads schedules and fires tasks at run time.
Neither component works alone. Both are required for recurring schedules.
Why use BTU?¶
- Desk-first — create and manage schedules without editing
hooks.pyor redeploying code. - Cron with time zones — per-schedule IANA time zones; enter local times, BTU handles UTC.
- Full logging — stdout and stderr captured in BTU Task Log, not just success/fail.
- Email notifications — optional alerts on completion or failure via Frappe Email Account.
- Run Later — defer one-shot work with Desk visibility (not invisible RQ
enqueue_at).
Quick start¶
| I want to… | Start here |
|---|---|
| Install BTU end-to-end | Installation |
| Understand the architecture | Mental model |
| Set up deferred work | Run Later → Poller recipe |
| Configure the scheduler daemon | Scheduler configuration |
| Configure email | Email integration |
Requirements¶
- Frappe v15 bench with Redis and RQ workers
- PostgreSQL or MariaDB (scheduler reads the same site database)
- BTU Scheduler daemon running continuously (
btu-py run-daemon)
ERPNext is not required.