Files
Max dml 7e5abd504f feat: add DBOS skills for TypeScript, Python, and Go (#94)
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>
2026-02-17 23:26:51 +01:00

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