mirror of
https://github.com/denoland/deno.git
synced 2024-12-24 08:09:08 -05:00
01d3e0f317
This PR adds unstable `Deno.cron` API to trigger execution of cron jobs. * State: All cron state is in memory. Cron jobs are scheduled according to the cron schedule expression and the current time. No state is persisted to disk. * Time zone: Cron expressions specify time in UTC. * Overlapping executions: not permitted. If the next scheduled execution time occurs while the same cron job is still executing, the scheduled execution is skipped. * Retries: failed jobs are automatically retried until they succeed or until retry threshold is reached. Retry policy can be optionally specified using `options.backoffSchedule`.
23 lines
535 B
Rust
23 lines
535 B
Rust
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
|
|
use async_trait::async_trait;
|
|
use deno_core::error::AnyError;
|
|
|
|
pub trait CronHandler {
|
|
type EH: CronHandle + 'static;
|
|
|
|
fn create(&self, spec: CronSpec) -> Result<Self::EH, AnyError>;
|
|
}
|
|
|
|
#[async_trait(?Send)]
|
|
pub trait CronHandle {
|
|
async fn next(&self, prev_success: bool) -> Result<bool, AnyError>;
|
|
fn close(&self);
|
|
}
|
|
|
|
#[derive(Clone)]
|
|
pub struct CronSpec {
|
|
pub name: String,
|
|
pub cron_schedule: String,
|
|
pub backoff_schedule: Option<Vec<u32>>,
|
|
}
|