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>
1.5 KiB
1.5 KiB
title, impact, impactDescription, tags
| title | impact | impactDescription | tags |
|---|---|---|---|
| Integrate DBOS with FastAPI | CRITICAL | Proper integration ensures workflows survive server restarts | fastapi, http, server, integration |
Integrate DBOS with FastAPI
When using DBOS with FastAPI, configure and launch DBOS inside the main function before starting uvicorn.
Incorrect (configuration at module level):
from fastapi import FastAPI
from dbos import DBOS, DBOSConfig
app = FastAPI()
# Don't configure at module level!
config: DBOSConfig = {"name": "my-app"}
DBOS(config=config)
@app.get("/")
@DBOS.workflow()
def endpoint():
return {"status": "ok"}
if __name__ == "__main__":
DBOS.launch()
uvicorn.run(app)
Correct (configuration in main):
import os
from fastapi import FastAPI
from dbos import DBOS, DBOSConfig
import uvicorn
app = FastAPI()
@DBOS.step()
def process_data():
return "processed"
@app.get("/")
@DBOS.workflow()
def endpoint():
result = process_data()
return {"result": result}
if __name__ == "__main__":
config: DBOSConfig = {
"name": "my-app",
"system_database_url": os.environ.get("DBOS_SYSTEM_DATABASE_URL"),
}
DBOS(config=config)
DBOS.launch()
uvicorn.run(app, host="0.0.0.0", port=8000)
The workflow decorator can be combined with FastAPI route decorators. The FastAPI decorator should come first (outermost).
Reference: DBOS with FastAPI