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.6 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Use DBOS Decorators with Classes MEDIUM Enables stateful workflow patterns with class instances classes, dbos_class, instance, oop

Use DBOS Decorators with Classes

DBOS decorators work with class methods. Workflow classes must inherit from DBOSConfiguredInstance.

Incorrect (missing class setup):

class MyService:
    def __init__(self, url):
        self.url = url

    @DBOS.workflow()  # Won't work without proper setup
    def fetch_data(self):
        return self.fetch()

Correct (proper class setup):

from dbos import DBOS, DBOSConfiguredInstance

@DBOS.dbos_class()
class URLFetcher(DBOSConfiguredInstance):
    def __init__(self, url: str):
        self.url = url
        # instance_name must be unique and passed to super()
        super().__init__(instance_name=url)

    @DBOS.workflow()
    def fetch_workflow(self):
        return self.fetch_url()

    @DBOS.step()
    def fetch_url(self):
        return requests.get(self.url).text

# Instantiate BEFORE DBOS.launch()
example_fetcher = URLFetcher("https://example.com")
api_fetcher = URLFetcher("https://api.example.com")

if __name__ == "__main__":
    DBOS.launch()
    print(example_fetcher.fetch_workflow())

Requirements:

  • Class must be decorated with @DBOS.dbos_class()
  • Class must inherit from DBOSConfiguredInstance
  • instance_name must be unique and passed to super().__init__()
  • All instances must be created before DBOS.launch()

Steps can be added to any class without these requirements.

Reference: Python Classes