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:
59
skills/dbos-python/references/workflow-timeout.md
Normal file
59
skills/dbos-python/references/workflow-timeout.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Set Workflow Timeouts
|
||||
impact: CRITICAL
|
||||
impactDescription: Prevents runaway workflows from consuming resources
|
||||
tags: timeout, cancel, deadline, limits
|
||||
---
|
||||
|
||||
## Set Workflow Timeouts
|
||||
|
||||
Use `SetWorkflowTimeout` to limit workflow execution time. Timed-out workflows are cancelled.
|
||||
|
||||
**Incorrect (no timeout):**
|
||||
|
||||
```python
|
||||
@DBOS.workflow()
|
||||
def potentially_long_workflow():
|
||||
# Could run forever!
|
||||
while not done:
|
||||
process_next()
|
||||
```
|
||||
|
||||
**Correct (with timeout):**
|
||||
|
||||
```python
|
||||
from dbos import SetWorkflowTimeout
|
||||
|
||||
@DBOS.workflow()
|
||||
def bounded_workflow():
|
||||
while not done:
|
||||
process_next()
|
||||
|
||||
# Workflow must complete within 60 seconds
|
||||
with SetWorkflowTimeout(60):
|
||||
bounded_workflow()
|
||||
|
||||
# Or with start_workflow
|
||||
with SetWorkflowTimeout(60):
|
||||
handle = DBOS.start_workflow(bounded_workflow)
|
||||
```
|
||||
|
||||
Timeout behavior:
|
||||
- Timeout is **start-to-completion** (doesn't count queue wait time)
|
||||
- Timeouts are **durable** (persist across restarts)
|
||||
- Cancellation happens at the **beginning of the next step**
|
||||
- **All child workflows** are also cancelled
|
||||
|
||||
With queues:
|
||||
|
||||
```python
|
||||
queue = Queue("example_queue")
|
||||
|
||||
# Timeout starts when dequeued, not when enqueued
|
||||
with SetWorkflowTimeout(30):
|
||||
queue.enqueue(my_workflow)
|
||||
```
|
||||
|
||||
Timeouts work with long durations (hours, days, weeks) since they're stored in the database.
|
||||
|
||||
Reference: [Workflow Timeouts](https://docs.dbos.dev/python/tutorials/workflow-tutorial#workflow-timeouts)
|
||||
Reference in New Issue
Block a user