Vasco Leitão
07/25/2025, 3:25 PMMarvin
07/25/2025, 3:25 PMMarvin
07/25/2025, 3:28 PMpython
from prefect import flow
@flow
def child_flow(x):
return x + 1
@flow
def parent_flow():
# Call the child flow just like you would call any function
result = child_flow(5)
return result
# When you run parent_flow(), it will automatically run child_flow as a subflow
result = parent_flow() # Returns 6
Key benefits of using subflows:
1. Modularity: Break down complex workflows into smaller, reusable pieces
2. Observability: Each subflow appears in the Prefect UI, making it easier to monitor and debug
3. Reusability: You can use the same flow as a standalone flow or as a subflow in different contexts
4. State Management: Subflows have their own state tracking, making it easier to understand where failures occur
You can also run deployed flows from within another flow using `run_deployment`:
python
from prefect import flow
from prefect.deployments import run_deployment
@flow
def orchestrator_flow():
# Run a deployed flow as part of this flow
deployment_result = run_deployment(
name="my-project/my-flow/production",
parameters={"param1": "value1"}
)
return deployment_result
This is particularly useful when you want to run flows that are deployed separately or need to run in different environments.
The pattern you choose (direct subflow calls vs. run_deployment) depends on your specific needs:
- Use direct subflow calls when you want everything to run in the same process
- Use run_deployment when you need the subflow to run in a different environment or want to leverage different work pools
Is there anything specific about subflows you'd like to know more about?