PrefectHQ / prefect
Prefect is a workflow orchestration framework for building resilient data pipelines in Python.
description README.md
Installation · Quickstart · Build workflows · Deploy workflows · Prefect Cloud
Prefect
Prefect is a workflow orchestration framework for building data pipelines in Python. It's the simplest way to elevate a script into a production workflow. With Prefect, you can build resilient, dynamic data pipelines that react to the world around them and recover from unexpected changes.
With just a few lines of code, data teams can confidently automate any data process with features such as scheduling, caching, retries, and event-based automations.
Workflow activity is tracked and can be monitored with a self-hosted Prefect server instance or managed Prefect Cloud dashboard.
[!TIP] Prefect flows can handle retries, dependencies, and even complex branching logic
Check our docs or see the example below to learn more!
Getting started
Prefect requires Python 3.10+. To install the latest version of Prefect, run one of the following commands:
pip install -U prefect
uv add prefect
Then create and run a Python file that uses Prefect flow and task decorators to orchestrate and observe your workflow - in this case, a simple script that fetches the number of GitHub stars from a repository:
from prefect import flow, task
import httpx
@task(log_prints=True)
def get_stars(repo: str):
url = f"https://api.github.com/repos/{repo}"
count = httpx.get(url).json()["stargazers_count"]
print(f"{repo} has {count} stars!")
@flow(name="GitHub Stars")
def github_stars(repos: list[str]):
for repo in repos:
get_stars(repo)
# run the flow!
if __name__ == "__main__":
github_stars(["PrefectHQ/prefect"])
Fire up a Prefect server and open the UI at http://localhost:4200 to see what happened:
prefect server start
To run your workflow on a schedule, turn it into a deployment and schedule it to run every minute by changing the last line of your script to the following:
if __name__ == "__main__":
github_stars.serve(
name="first-deployment",
cron="* * * * *",
parameters={"repos": ["PrefectHQ/prefect"]}
)
You now have a process running locally that is looking for scheduled deployments! Additionally you can run your workflow manually from the UI or CLI. You can even run deployments in response to events.
[!TIP] Where to go next - check out our documentation to learn more about:
Prefect Cloud
Prefect Cloud provides workflow orchestration for the modern data enterprise. By automating over 200 million data tasks monthly, Prefect empowers diverse organizations — from Fortune 50 leaders such as Progressive Insurance to innovative disruptors such as Cash App — to increase engineering productivity, reduce pipeline errors, and cut data workflow compute costs.
Read more about Prefect Cloud here or sign up to try it for yourself.
prefect-client
If your use case is geared towards communicating with Prefect Cloud or a remote Prefect server, check out our prefect-client. It is a lighter-weight option for accessing client-side functionality in the Prefect SDK and is ideal for use in ephemeral execution environments.
Connect & Contribute
Join a thriving community of over 25,000 practitioners who solve data challenges with Prefect. Prefect's community is built on collaboration, technical innovation, and continuous improvement.
Community Resources
🌐 Explore the Documentation - Comprehensive guides and API references
💬 Join the Slack Community - Connect with thousands of practitioners
🤝 Contribute to Prefect - Help shape the future of the project
🔌 Support or create a new Prefect integration - Extend Prefect's capabilities
📋 Tail the Dev Log - Prefect's open source development blog
Stay Informed
📥 Subscribe to our Newsletter - Get the lates