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>
This commit is contained in:
61
skills/dbos-python/references/comm-events.md
Normal file
61
skills/dbos-python/references/comm-events.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: Use Events for Workflow Status Publishing
|
||||
impact: MEDIUM
|
||||
impactDescription: Enables real-time workflow status monitoring
|
||||
tags: 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):**
|
||||
|
||||
```python
|
||||
@DBOS.workflow()
|
||||
def long_workflow():
|
||||
step_one()
|
||||
step_two() # Client can't see progress
|
||||
step_three()
|
||||
return "done"
|
||||
```
|
||||
|
||||
**Correct (publishing events):**
|
||||
|
||||
```python
|
||||
@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:
|
||||
|
||||
```python
|
||||
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](https://docs.dbos.dev/python/tutorials/workflow-communication#workflow-events)
|
||||
Reference in New Issue
Block a user