@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
| Format | Description |
|---|---|
"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
| Code | Rule |
|---|---|
| E08 | Invalid cron schedule format |
| E09 | Cron memory out of range (128–10240 MB) |
| E10 | Cron timeout out of range (1–900 s) |