Skip to content

Welcome to Prefect

Prefect enables you to build and observe resilient data workflows so that you can understand, react to, and recover from unexpected changes. It's the easiest way to transform any Python function into a unit of work that can be observed and orchestrated. Just bring your Python code, sprinkle in a few decorators, and go!

With Prefect you gain simple:

Trying to implement these features from scratch is a huge pain that takes time, headaches, and money. That's why Prefect offers all this functionality and more!

screenshot of Cloud UI timeline view with menu

Prefect UI

New to Prefect?

If you're ready to dive in and learn Prefect, try the tutorial where you'll create a full data project, jump into Prefect concepts, or explore the guides for common use cases.

Tutorials Concepts Guides

Or, read on for a quick sample of Prefect.

Quick Start: Hello Prefect

Install Prefect with

pip install -U prefect

See the install guide for more detailed instructions.

Run a basic flow

Import flow and decorate your Python function using the @flow decorator.

from prefect import flow

def my_favorite_function():
    print("What is your favorite number?")
    return 42


Thats it! Your function is now a flow. Run the code as you normally would, and you'll see its execution via the Prefect logs:

$ python
15:27:42.543 | INFO    | prefect.engine - Created flow run 'olive-poodle' for flow 'my-favorite-function'
15:27:42.543 | INFO    | Flow run 'olive-poodle' - Using task runner 'ConcurrentTaskRunner'
What is your favorite number?
15:27:42.652 | INFO    | Flow run 'olive-poodle' - Finished in state Completed()

Prefect automatically persists all executions of your flow along with useful metadata such as start time, end time, and state. This is just the beginning, so keep exploring to learn how to add retries, notifications, scheduling and much more!

Next Steps

To learn more, try our tutorials and guides, or go deeper with Prefect concepts.


Changing from 'Orion'

With the 2.8.1 release, we removed references to "Orion" and replaced them with more explicit, conventional nomenclature throughout the codebase. These changes clarify the function of various components, commands, and variables. See the Release Notes for details.

Looking for Prefect 1 Core and Server?

Prefect 2 is now available for general use. See our Migration Guide to move your flows from Prefect 1 to Prefect 2.

Prefect 1 Core and Server documentation is available at