Cron
Schedule functions with cron expressions.
Schedule functions to execute at specific times using cron expressions.
modules::cron::CronModuleSample Configuration
- class: modules::cron::CronModule
config:
adapter:
class: modules::cron::adapters::RedisAdapter
config:
redis_url: ${REDIS_URL:redis://localhost:6379}Configuration
The adapter to use for distributed locking and job persistence. Redis adapter is recommended for multi-instance deployments.
Adapters
modules::cron::adapters::RedisAdapter
Uses Redis for distributed locking to prevent duplicate job execution across multiple engine instances.
class: modules::cron::adapters::RedisAdapter
config:
redis_url: ${REDIS_URL:redis://localhost:6379}Configuration
Trigger Type
This Module adds a new Trigger Type: cron.
Sample Code
import { logger } from '@iii-dev/sdk'
// Register a function to run on a schedule
bridge.registerFunction({
function_path: 'jobs.cleanupOldData',
handler: async () => {
logger.info('Running scheduled cleanup...')
// Perform cleanup tasks
},
})
// Schedule to run every day at 2 AM
bridge.registerTrigger({
trigger_type: 'cron',
function_path: 'jobs.cleanupOldData',
config: {
cron: '0 2 * * *',
},
})Common Cron Expressions
| Expression | Description |
|---|---|
* * * * * | Every minute |
0 * * * * | Every hour |
0 0 * * * | Every day at midnight |
0 0 * * 0 | Every Sunday at midnight |
0 2 * * * | Every day at 2 AM |
*/5 * * * * | Every 5 minutes |
0 9-17 * * 1-5 | Every hour from 9 AM to 5 PM, Monday to Friday |
Distributed Execution
When running multiple iii Engine instances, the Cron Module uses distributed locking to ensure jobs execute only once: