Expand description
Cron job scheduling for Armature framework.
Provides a robust cron job scheduler with support for:
- ⏰ Standard cron expressions
- 📛 Named jobs with metadata
- 🚀 Async job execution
- 🪝 Job lifecycle hooks
- ❌ Error handling and retry logic
- 🔒 Job overlap prevention
§Quick Start - Cron Expressions
use armature_cron::CronExpression;
// Parse a cron expression for "every hour"
let expr = CronExpression::parse("0 0 * * * *").unwrap();
// Get next execution time
let now = chrono::Utc::now();
let next = expr.next_after(now);
assert!(next.is_some());
assert!(next.unwrap() > now);§Cron Expression Presets
use armature_cron::expression::{CronExpression, CronPresets};
// Use preset expressions
let every_minute = CronExpression::parse(CronPresets::EVERY_MINUTE).unwrap();
let every_hour = CronExpression::parse(CronPresets::EVERY_HOUR).unwrap();
let daily = CronExpression::parse(CronPresets::DAILY).unwrap();
// Verify they parse correctly
let now = chrono::Utc::now();
assert!(every_minute.next_after(now).unwrap() > now);
assert!(every_hour.next_after(now).unwrap() > now);
assert!(daily.next_after(now).unwrap() > now);§Complete Example
use armature_cron::*;
#[tokio::main]
async fn main() -> Result<(), CronError> {
let mut scheduler = CronScheduler::new();
// Schedule a job to run every minute
scheduler.add_job(
"cleanup",
"0 * * * * *",
|context| Box::pin(async move {
println!("Running cleanup job");
Ok(())
})
)?;
// Start the scheduler
scheduler.start().await?;
Ok(())
}Re-exports§
pub use error::CronError;pub use error::CronResult;pub use expression::CronExpression;pub use job::Job;pub use job::JobContext;pub use job::JobFn;pub use job::JobStatus;pub use scheduler::CronScheduler;pub use scheduler::SchedulerConfig;
Modules§
- error
- Error types for cron operations.
- expression
- Cron expression parsing and evaluation.
- job
- Job definition and execution.
- prelude
- Re-export commonly used types
- scheduler
- Cron job scheduler.