Skip to main content

@dpl.cron() — Scheduled Lambdas

Decorate any function with @dpl.cron() to deploy it as a separate Lambda triggered by EventBridge on the indicated schedule.

@dpl.cron(
schedule: str, # Schedule expression (required)
memory: int = None, # MB. If None, uses globals.memory
timeout: int = None, # Seconds. If None, uses globals.timeout
env: dict = None, # Additional environment variables
description: str = None,
)

Schedule formats​

FormatDescription
"rate(5 minutes)"Every 5 minutes
"rate(1 hour)"Every hour
"rate(24 hours)"Daily
"cron(0 9 * * ? *)"Every day at 9:00 UTC

Requirements​

The function must have the Lambda signature (event, context).

Example​

app/features/user/routes.py
import deployless as dpl

@dpl.cron(
schedule="rate(24 hours)",
memory=128,
timeout=300,
description="Daily cleanup of expired users",
)
def cleanup_expired_users(event, context):
deleted = delete_expired_users()
return {"status": "ok", "deleted": deleted}

Generated template​

CleanupExpiredUsersFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .dist/CleanupExpiredUsersFunction/
Handler: bootstrap.handler
MemorySize: 128
Timeout: 300
Description: Daily cleanup of expired users
Events:
Schedule:
Type: Schedule
Properties:
Schedule: rate(24 hours)

Validation​

CodeRule
E08Invalid cron schedule format
E09Cron memory out of range (128–10240 MB)
E10Cron timeout out of range (1–900 s)