modal.Period

class Period(modal.schedule.Schedule)

Create a schedule that runs every given time interval.

Usage

import modal
app = modal.App()

@app.function(schedule=modal.Period(days=1))
def f():
    print("This function will run every day")

modal.Period(hours=4)          # runs every 4 hours
modal.Period(minutes=15)       # runs every 15 minutes
modal.Period(seconds=math.pi)  # runs every 3.141592653589793 seconds

Only seconds can be a float. All other arguments are integers.

Note that days=1 will trigger the function the same time every day. This does not have the same behavior as seconds=84000 since days have different lengths due to daylight savings and leap seconds. Similarly, using months=1 will trigger the function on the same day each month.

This behaves similar to the dateutil package.

def __init__(
    self,
    years: int = 0,
    months: int = 0,
    weeks: int = 0,
    days: int = 0,
    hours: int = 0,
    minutes: int = 0,
    seconds: float = 0,
) -> None: