Shahid Khan
02/18/2025, 6:14 PMBianca Hoch
02/18/2025, 10:32 PMfrom prefect import flow, get_client, task
from prefect.runtime import flow_run
from random import choice
#Update tags for flow runs
def update_flow_run_tags():
COLORS = ["red", "blue", "green", "yellow", "purple", "orange", "pink"]
#tags need to be a valid list
random_color = [f"{choice(COLORS)}"]
flow_run_id = flow_run.get_id()
with get_client(sync_client=True) as client:
client.update_flow_run(flow_run_id=flow_run_id, tags=random_color)
#Update tags for task runs``
def update_task_tags():
COLORS = ["red", "blue", "green", "yellow", "purple", "orange", "pink"]
random_color = [f"{choice(COLORS)}"]
return random_color
@task(tags=update_task_tags())
def task1(name: str):
print(f"Hello, {name}, I'm task 1!")
@task(tags=update_task_tags())
def task2(name: str):
print(f"Hello, {name}, I'm task 2!")
@flow()
def subflow1(name: str):
update_flow_run_tags()
print(f"Hello, {name}, I'm subflow 1!")
@flow()
def subflow2(name: str):
update_flow_run_tags()
print(f"Hello, {name}, I'm subflow 2!")
@flow(log_prints=True)
def dynamic_tags_flow(name: str):
#Update tags for the parent flow
update_flow_run_tags()
print(f"Hello, {name}, I'm a main flow!")
#Call the tasks
task1(name)
task2(name)
#Call the subflows
subflow1(name)
subflow2(name)
Chris White
tags
context manager designed for this:
from prefect import tags
@flow
def example():
with tags("blue", "red", "green"):
... # any task called or submitted within this block
... # will inherit the new tags
Bianca Hoch
02/19/2025, 1:11 AMShahid Khan
02/20/2025, 9:42 PMChris White
Shahid Khan
02/20/2025, 10:02 PMShahid Khan
03/13/2025, 12:55 AMwith_options
, and now tagging to the task is successful, finally visible in task configuration data.
Thanks a lot for all the help.