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
Use Events for Workflow Status Publishing MEDIUM Enables real-time workflow status monitoring events, set_event, get_event, status

Use Events for Workflow Status Publishing

Workflows can publish key-value events that clients can read. Events are persisted and useful for status updates.

Incorrect (no way to monitor progress):

@DBOS.workflow()
def long_workflow():
    step_one()
    step_two()  # Client can't see progress
    step_three()
    return "done"

Correct (publishing events):

@DBOS.workflow()
def long_workflow():
    DBOS.set_event("status", "starting")

    step_one()
    DBOS.set_event("status", "step_one_complete")

    step_two()
    DBOS.set_event("status", "step_two_complete")

    step_three()
    DBOS.set_event("status", "finished")
    return "done"

# Client code to read events
@app.post("/start")
def start_workflow():
    handle = DBOS.start_workflow(long_workflow)
    return {"workflow_id": handle.get_workflow_id()}

@app.get("/status/{workflow_id}")
def get_status(workflow_id: str):
    status = DBOS.get_event(workflow_id, "status", timeout_seconds=0) or "not started"
    return {"status": status}

Get all events from a workflow:

all_events = DBOS.get_all_events(workflow_id)
# Returns: {"status": "finished", "other_key": "value"}

Events can be called from set_event from workflows or steps.

Reference: Workflow Events