Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 16 additions & 5 deletions references/python/versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,13 +224,12 @@ worker = Worker(
Workflows stay locked to their original Worker version:

```python
from temporalio.workflow import VersioningBehavior
from temporalio.common import VersioningBehavior

@workflow.defn
@workflow.defn(versioning_behavior=VersioningBehavior.PINNED)
class StableWorkflow:
@workflow.run
async def run(self) -> str:
# This workflow will always run on its assigned version
return await workflow.execute_activity(
process_order,
start_to_close_timeout=timedelta(minutes=5),
Expand All @@ -247,6 +246,19 @@ class StableWorkflow:

Workflows can move to newer versions:

```python
from temporalio.common import VersioningBehavior

@workflow.defn(versioning_behavior=VersioningBehavior.AUTO_UPGRADE)
class UpgradableWorkflow:
@workflow.run
async def run(self) -> str:
return await workflow.execute_activity(
process_order,
start_to_close_timeout=timedelta(minutes=5),
)
```

**When to use AUTO_UPGRADE:**
- Long-running workflows (weeks or months)
- Workflows need to benefit from bug fixes during execution
Expand All @@ -258,7 +270,6 @@ Workflows can move to newer versions:
### Worker Configuration with Default Behavior

```python
# For short-running workflows, prefer PINNED
worker = Worker(
client,
task_queue="orders-task-queue",
Expand All @@ -270,7 +281,7 @@ worker = Worker(
build_id=os.environ["BUILD_ID"],
),
use_worker_versioning=True,
# default_versioning_behavior=VersioningBehavior.PINNED,
default_versioning_behavior=VersioningBehavior.PINNED,
),
)
```
Expand Down