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.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.scheduled decorator with crontab syntax
  • Must accept two arguments: scheduled_time and actual_time (both datetime)
  • 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 minute
  • 0 * * * * = every hour
  • 0 0 * * * = daily at midnight
  • 0 0 * * 0 = weekly on Sunday

Reference: Scheduled Workflows