from prefect import task, Flow @task def say_hello(): print("Hello, world!") with Flow("My First Flow") as flow: say_hello() flow.run() # "Hello, world!"
Test your flows right from your laptop.
When it's time to deploy, Prefect will make sure they run exactly the same way.
Developed in partnership with hundreds of data scientists and engineers to ensure compliance with best practices, Prefect Core has been successfully deployed everywhere from data-science bootcamps to Fortune-100 teams.
Prefect flows are plain old Python, so you can build and modify them however you like.
Add parameters to any flow for easy runtime templating and reuse.
Prefect handles every error, whether expected or not. Some tasks might only run if upstream tasks fail.
Pass data between tasks for complex processing and advanced analytics.
Powerful map/reduce operators generate dynamic tasks for each element of an input. Mapped tasks can be linked to create parallel pipelines.
A flexible environment model means flows can be deployed anywhere from a laptop to multi-cloud clusters.
When paired with Dask, Prefect's event-driven scheduler can execute tasks with millisecond latency.
Prefect task outputs can be cached or updated at different intervals, even within the same workflow.
Serialize data in and out of your tasks with customizable result handlers, including local filesystems, S3, and GCS.
Specify custom schedule logic including business days, offsets, and blackout windows, or fall back on good old cron.
Loop tasks with arbitrary control logic.
Fire off flow runs in response to external events of any frequency.
Run each task in a completely different environment, including new dependencies or platforms.
Race through mapped pipelines by allowing tasks to start before all tasks of the previous stage have finished.