Files
antigravity-skills-reference/skills/dbos-golang/references/pattern-sleep.md
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.4 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Use Durable Sleep for Delayed Execution MEDIUM Enables reliable scheduling across restarts pattern, sleep, delay, durable, schedule

Use Durable Sleep for Delayed Execution

Use dbos.Sleep for durable delays within workflows. The wakeup time is stored in the database, so the sleep survives restarts.

Incorrect (non-durable sleep):

func delayedTask(ctx dbos.DBOSContext, input string) (string, error) {
	// time.Sleep is not durable - lost on restart!
	time.Sleep(60 * time.Second)
	result, err := dbos.RunAsStep(ctx, doWork, dbos.WithStepName("doWork"))
	return result, err
}

Correct (durable sleep):

func delayedTask(ctx dbos.DBOSContext, input string) (string, error) {
	// Durable sleep - survives restarts
	_, err := dbos.Sleep(ctx, 60*time.Second)
	if err != nil {
		return "", err
	}
	result, err := dbos.RunAsStep(ctx, doWork, dbos.WithStepName("doWork"))
	return result, err
}

dbos.Sleep takes a time.Duration. It returns the remaining sleep duration (zero if completed normally).

Use cases:

  • Scheduling tasks to run in the future
  • Implementing retry delays
  • Delays spanning hours, days, or weeks
func scheduledTask(ctx dbos.DBOSContext, task string) (string, error) {
	// Sleep for one week
	dbos.Sleep(ctx, 7*24*time.Hour)
	return processTask(task)
}

Reference: Durable Sleep