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
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