View in #prefect-community on Slack
@Shiyu_Gan: What does *prefect.core.flow.Flow.run_agent*
do? It’s unclear from documentation and src code, which seems to say it runs an Agent from inside a Flow, which might be confusing since I was under the impression that Agent runs Flows, not the other way around.
@Anna_Geller: You shouldn’t start an agent from inside the flow because the agent must already exist so that it can pick up a flow run
Usually here is how it works. You start by writing your flow - yourflow.py
:
from prefect import task, Flow
@task(log_stdout=True)
def hello_world():
print("hello world")
with Flow("hello") as flow:
hw = hello_world()
You start an agent from one terminal:
prefect agent local start
Then in another terminal, you register your flow:
prefect register --project xxx -p /path/to/yourflow.py
Then you can trigger a run on the agent:
prefect run --project xxx --name yourflowname --watch
and then you should see that your agent picked up this flow run
@Kevin_Kho: Not super sure, but I don’t think that is hooked up anywhere
Solution
@Michael_Adkins: run_agent
isn’t recommended anymore, but it basically runs the agent inline instead of in a separate process as you would with prefect agent local start
. It makes sure to include the labels that your flow would need to match.