언바운드 함수로 만드는 워크플로(Workflows from Unbound Functions)

언바운드 함수로 만드는 워크플로(Workflows from Unbound Functions)

대부분의 예제는 스텝을 Workflow 서브클래스의 메서드로 정의해요. 하지만 @step(workflow=...)을 쓰면 독립 함수를 워크플로 클래스에 붙일 수도 있습니다. 재사용 가능한 함수들로 워크플로를 조립하거나, 통합 코드가 워크플로를 상속하지 않고 스텝을 추가하고 싶을 때 유용해요.

먼저 스텝을 담을 빈 클래스를 만듭니다.

from workflows import Workflow


class TestWorkflow(Workflow):
    pass

이제 함수를 정의하고 @step() 데코레이터로 장식하면 워크플로에 스텝을 추가할 수 있어요.

from workflows import step
from workflows.events import StartEvent, StopEvent


@step(workflow=TestWorkflow)
async def some_step(ev: StartEvent) -> StopEvent:
    return StopEvent()

출처: 공식문서 - Workflows from unbound functions

이 예에서 데코레이터는 some_stepTestWorkflow 클래스에 등록합니다. 함수 시그니처는 메서드 스텝과 같지만 self 파라미터가 없다는 점만 달라요.

등록은 import 시점에 일어납니다. 함수를 정의한 모듈이 워크플로를 인스턴스화하거나 검증하기 전에 import 되어 있는지 확인하세요. 스텝 이름은 여전히 고유해야 해요. 기존 메서드나 자유 함수 스텝과 같은 이름의 자유 함수를 등록하면 검증 오류가 발생합니다.

더 알아보기