Andreas Nord
03/13/2024, 10:04 AMMarvin
03/13/2024, 10:04 AMasyncioasyncpython
import asyncio
from prefect import flow
@flow(name="Deployment A")
def deployment_a():
    # Your logic here
@flow(name="Deployment B")
def deployment_b():
    # Your logic here
@flow(name="Deployment C")
def deployment_c():
    # Your logic here
@flow(name="Orchestrator")
async def orchestrator():
    a_task = asyncio.create_task(deployment_a())  # Start A
    await asyncio.create_task(deployment_b())     # Start B concurrently
    await a_task  # Optionally wait for A to start or finish
    deployment_c()  # Start C
if __name__ == "__main__":
    asyncio.run(orchestrator())Andreas Nord
03/13/2024, 2:05 PMMarvin
03/13/2024, 2:05 PMpython
import asyncio
from prefect import flow
@flow(name="Flow Template")
def flow_template(flow_number):
    # Your logic for each flow here
    print(f"Running Flow #{flow_number}")
@flow(name="Follow-Up Flow")
def follow_up_flow():
    # Your logic for the follow-up flow here
    print("Running Follow-Up Flow")
@flow(name="Orchestrator with loop")
async def orchestrator_with_loop():
    # Start flows 1 to n concurrently
    flow_tasks = [asyncio.create_task(flow_template(i)) for i in range(1, n + 1)]
    # Wait for all flows to be done
    await asyncio.gather(*flow_tasks)
    
    # Run follow-up flow C
    follow_up_flow()
if __name__ == "__main__":
    n = 10  # For example, if you have 10 flows to run
    asyncio.run(orchestrator_with_loop())