Crate armature_cron

Crate armature_cron 

Source
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.