Skip to content

Instantly share code, notes, and snippets.

@nmagee
Created September 24, 2025 20:55
Show Gist options
  • Select an option

  • Save nmagee/641c0756cd65d4b833007325e90788c2 to your computer and use it in GitHub Desktop.

Select an option

Save nmagee/641c0756cd65d4b833007325e90788c2 to your computer and use it in GitHub Desktop.
Prefect - Two simple flows

prefect

Install

In a new virtual environment:

pip install prefect requests sympy

Server

Configure your local settings and then run the server

prefect config set PREFECT_API_URL="http://127.0.0.1:4200/api"
prefect server start

If you prefer to run the server in Docker:

prefect config set PREFECT_API_URL="http://127.0.0.1:4200/api"
docker run -p 4200:4200 -d --rm prefecthq/prefect:3-latest -- prefect server start --host 0.0.0.0

Submitting Flows / Deployments

Once the above steps are complete, just write python with the appropriate @flow and @task decorators. To submit a run or deployment, bounce your script off of python:

python determine_prime.py

And then open your browser to http://127.0.0.1:4200/dashboard to monitor.

from prefect import flow, task, get_run_logger
from sympy import isprime
import requests
@task(retries=5, retry_delay_seconds=60, log_prints=True)
def get_number():
num = requests.get('http://ids-sds.pods.uvarc.io/int/4')
num = num.json()
num = int(num['id'])
print("Ha look at me writing to the log!")
logger = get_run_logger()
logger.info(f"The number is: {num}.")
return(num)
@task
def determine_prime(number):
if isprime(number):
logger = get_run_logger()
logger.info(f"{number} is a prime number.")
else:
logger = get_run_logger()
logger.info(f"{number} is NOT a prime number.")
@flow
def determine_prime_flow():
number = get_number()
determine_prime(number)
if __name__ == "__main__":
determine_prime_flow.serve(name="scheduled-prime-test", cron="* * * * *")
from prefect import flow, task
@task
def create_message():
msg = "Hello there"
return(msg)
@flow
message = create_message()
print(message)
if __name__ == "__main__":
hello_world.serve(name="hellow-deployment", cron="* * * * *")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment