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:
56
skills/dbos-python/references/pattern-scheduled.md
Normal file
56
skills/dbos-python/references/pattern-scheduled.md
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: Create Scheduled Workflows
|
||||
impact: MEDIUM
|
||||
impactDescription: Run workflows exactly once per time interval
|
||||
tags: 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):**
|
||||
|
||||
```python
|
||||
# Don't use external cron or manual timers
|
||||
import schedule
|
||||
schedule.every(1).minute.do(my_task)
|
||||
```
|
||||
|
||||
**Correct (DBOS scheduled workflow):**
|
||||
|
||||
```python
|
||||
@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):
|
||||
|
||||
```python
|
||||
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](https://docs.dbos.dev/python/tutorials/scheduled-workflows)
|
||||
Reference in New Issue
Block a user