Add three DBOS SDK skills with reference documentation for building reliable, fault-tolerant applications with durable workflows. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
title, impact, impactDescription, tags
| title | impact | impactDescription | tags |
|---|---|---|---|
| Create Scheduled Workflows | MEDIUM | Run workflows exactly once per time interval | scheduled, cron, recurring, timer |
Create Scheduled Workflows
Use @DBOS.scheduled to run workflows on a schedule. Workflows run exactly once per interval.
Incorrect (manual scheduling):
# Don't use external cron or manual timers
import schedule
schedule.every(1).minute.do(my_task)
Correct (DBOS scheduled workflow):
@DBOS.scheduled("* * * * *") # Every minute
@DBOS.workflow()
def run_every_minute(scheduled_time, actual_time):
print(f"Running at {scheduled_time}")
do_maintenance_task()
@DBOS.scheduled("0 */6 * * *") # Every 6 hours
@DBOS.workflow()
def periodic_cleanup(scheduled_time, actual_time):
cleanup_old_records()
Scheduled workflow requirements:
- Must have
@DBOS.scheduleddecorator with crontab syntax - Must accept two arguments:
scheduled_timeandactual_time(bothdatetime) - Main thread must stay alive for scheduled workflows
For apps with only scheduled workflows (no HTTP server):
import threading
if __name__ == "__main__":
DBOS.launch()
threading.Event().wait() # Block forever
Crontab format: minute hour day month weekday
* * * * *= every minute0 * * * *= every hour0 0 * * *= daily at midnight0 0 * * 0= weekly on Sunday
Reference: Scheduled Workflows