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.3 KiB
1.3 KiB
title, impact, impactDescription, tags
| title | impact | impactDescription | tags |
|---|---|---|---|
| Use Durable Sleep for Delayed Execution | MEDIUM | Survives restarts and can span days or weeks | sleep, delay, schedule, durable |
Use Durable Sleep for Delayed Execution
Use DBOS.sleep() for durable delays that survive restarts. The wakeup time is persisted in the database.
Incorrect (regular sleep):
import time
@DBOS.workflow()
def delayed_task(delay_seconds, task):
# Regular sleep is lost on restart!
time.sleep(delay_seconds)
run_task(task)
Correct (durable sleep):
@DBOS.workflow()
def delayed_task(delay_seconds, task):
# Durable sleep - survives restarts
DBOS.sleep(delay_seconds)
run_task(task)
Use cases for durable sleep:
- Schedule a task for the future
- Wait between retries
- Implement delays spanning hours, days, or weeks
Example: Schedule a reminder:
@DBOS.workflow()
def send_reminder(user_id: str, message: str, delay_days: int):
# Sleep for days - survives any restart
DBOS.sleep(delay_days * 24 * 60 * 60)
send_notification(user_id, message)
For async workflows, use DBOS.sleep_async():
@DBOS.workflow()
async def async_delayed_task():
await DBOS.sleep_async(60)
await run_async_task()
Reference: Durable Sleep