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