dbos-python
DBOS Python SDK for building reliable, fault-tolerant applications with durable workflows. Use this skill when writing Python code with DBOS, creating workflows and steps, using queues, using DBOSClient from external applications, or building applications that need to be resilient to failures.
By dbos-inc · 654 installs
npx skills add dbos-inc/agent-skills --skill dbos-python
Source repository · Upstream listing
DBOS Python Best Practices
Guide for building reliable, fault tolerant Python applications with DBOS durable workflows. Targets DBOS Python 3.x.
When to Apply
Reference these guidelines when:
Adding DBOS to existing Python code
Creating workflows and steps
Using queues for concurrency control
Implementing workflow communication (events, messages, streams)
Configuring and launching DBOS applications
Using DBOSClient from external applications
Testing DBOS applications
Upgrading DBOS Python 2.x code to 3.x
Rule Categories by Priority
Priority Category Impact Prefix
1 Lifecycle CRITICAL lifecycle
2 Workflow CRITICAL workflow
3 Step HIGH step
4 Queue HIGH queue
5 Communication MEDIUM comm
6 Pattern MEDIUM pattern
7 Testing LOW MEDIUM test
8 Client MEDIUM client
9 Advanced LOW advanced
Critical Rules
DBOS Configuration and Launch
A DBOS application MUST configure and launch DBOS inside its main function:
When creating a new application, set application version to "0.1.0" . If omitted, DBOS derives an opaque hash from workflow source code. When editing an existing application, leave its configured version alone — changing it is a deployment decision (see references/advanced versioning.md ).
Workflow and Step Structure
Workflows are comprised of steps. Any function performing complex operations or accessing external services must be a step:
Key Constraints
Do NOT call DBOS.start workflow or DBOS.recv from a step
Do NOT use threads to start workflows use DBOS.start workflow or queues
Workflows MUST be deterministic non deterministic operations go in steps
Do NOT create/update global variables from workflows or steps
In async def code, use the async variants of DBOS methods ( await DBOS.start workflow async(...) , send async , recv async , sleep async , register queue async , ...): many synchronous DBOS methods (such as DBOS.sleep , DBOS.recv , DBOS.send , DBOS.set event , DBOS.get event , and DBOS.register queue ) raise RuntimeError when called while an event loop is running
Register queues and create schedules AFTER DBOS.launch() ; create datasources BEFORE it
Connecting to DBOS Conductor ( conductor key , or deploying to DBOS Cloud), and auto upgrade ( auto upgrade ) require pip install "dbos[enterprise]" ; auto upgrade also needs an entitled key ( conductor key , or transact enterprise key in development). See references/lifecycle config.md
Do NOT set enable patching (deprecated in 3.4): DBOS.patch and DBOS.deprecate patch work without it. To let patched code recover older workflows, pin application version or use auto upgrade (see references/advanced patching.md )
Removed in DBOS 3.0 (never generate these)
@DBOS.transaction / DBOS.sql session / application database url (use datasources), Queue(...) (use DBOS.register queue ), partition queue / priority enabled , @DBOS.scheduled (use DBOS.apply schedules ), and DBOS(fastapi=...) / DBOS(flask=...) . To migrate existing 2.x code, see references/advanced upgrading v3.md .
How to Use
Read individual rule files for detailed explanations and examples:
If multiple applications share one system database, see references/advanced shared database.md .
References
https://docs.dbos.dev/
https://github.com/dbos inc/dbos transact py