After you install Prefect you have a Python SDK client that can communicate with Prefect Cloud, the platform hosted by Prefect. You also have an API server backed by a database and a UI.
In this section you'll learn how to host your own Prefect server.
Spin up a local Prefect server UI with the prefect server start CLI command in the terminal:
$prefectserverstart
Open the URL for the Prefect server UI (http://127.0.0.1:4200 by default) in a browser.
Shut down the Prefect server with ctrl + c in the terminal.
Differences between a Prefect server and Prefect Cloud¶
The self-hosted Prefect server and Prefect Cloud share a common set of features. Prefect Cloud also includes the following features:
User accounts — personal accounts for working in Prefect Cloud.
Workspaces — isolated environments to organize your flows, deployments, and flow runs.
Automations — configure triggers, actions, and notifications in response to real-time monitoring events.
Email notifications — send email alerts from Prefect's serves based on automation triggers.
Organizations — user and workspace management features that enable collaboration for larger teams.
Service accounts — configure API access for running agents or executing flow runs on remote infrastructure.
The Prefect database persists data to track the state of your flow runs and related Prefect concepts, including:
Flow run and task run state
Run history
Logs
Deployments
Flow and task run concurrency limits
Storage blocks for flow and task results
Variables
Artifacts
Work pool and work queue configuration and status
Currently Prefect supports the following databases:
SQLite: The default in Prefect, and our recommendation for lightweight, single-server deployments. SQLite requires essentially no setup.
PostgreSQL: Best for connecting to external databases, but does require additional setup (such as Docker). Prefect uses the pg_trgm extension, so it must be installed and enabled.
A local SQLite database is the default database and is configured upon Prefect installation. The database is located at ~/.prefect/prefect.db by default.
To reset your database, run the CLI command:
prefectserverdatabasereset-y
This command will clear all data and reapply the schema.
Your database runs on the same host as the Prefect server instance, localhost
You use the default PostgreSQL port 5432
Your PostgreSQL instance has a database called prefect
If you want to quickly start a PostgreSQL instance that can be used as your Prefect database, you can use the following command that will start a Docker container running PostgreSQL:
Prefect uses Alembic to manage database migrations. Alembic is a
database migration tool for usage with the SQLAlchemy Database Toolkit for Python. Alembic provides a framework for
generating and applying schema changes to a database.
To apply migrations to your database you can run the following commands:
To upgrade:
prefectserverdatabaseupgrade-y
To downgrade:
prefectserverdatabasedowngrade-y
You can use the -r flag to specify a specific migration version to upgrade or downgrade to.
For example, to downgrade to the previous migration version you can run:
prefectserverdatabasedowngrade-y-r-1
or to downgrade to a specific revision:
prefectserverdatabasedowngrade-y-rd20618ce678e
See the contributing docs for information on how to create new database migrations.
When you use Prefect Cloud you gain access to a hosted platform with Workspace & User controls, Events, and Automations. Prefect Cloud has an option for automation notifications. The more limited Notifications option is provided for the self-hosted Prefect server.
Notifications enable you to set up alerts that are sent when a flow enters any state you specify. When your flow and task runs changes state, Prefect notes the state change and checks whether the new state matches any notification policies. If it does, a new notification is queued.
Prefect supports sending notifications via:
Slack message to a channel
Microsoft Teams message to a channel
Opsgenie to alerts
PagerDuty to alerts
Twilio to phone numbers
Email (requires your own server)
Notifications in Prefect Cloud
Prefect Cloud uses the robust Automations interface to enable notifications related to flow run state changes and work queue health.