tokio_cron_scheduler

Struct JobScheduler

Source
pub struct JobScheduler {
    pub context: Arc<Context>,
    pub inited: Arc<RwLock<bool>>,
    pub job_creator: Arc<RwLock<JobCreator>>,
    pub job_deleter: Arc<RwLock<JobDeleter>>,
    pub job_runner: Arc<RwLock<JobRunner>>,
    pub notification_creator: Arc<RwLock<NotificationCreator>>,
    pub notification_deleter: Arc<RwLock<NotificationDeleter>>,
    pub notification_runner: Arc<RwLock<NotificationRunner>>,
    pub scheduler: Arc<RwLock<Scheduler>>,
    pub shutdown_notifier: Option<Arc<RwLock<Box<dyn FnMut() -> Pin<Box<dyn Future<Output = ()> + Send>> + Send + Sync>>>>,
}
Expand description

The JobScheduler contains and executes the scheduled jobs.

Fields§

§context: Arc<Context>§inited: Arc<RwLock<bool>>§job_creator: Arc<RwLock<JobCreator>>§job_deleter: Arc<RwLock<JobDeleter>>§job_runner: Arc<RwLock<JobRunner>>§notification_creator: Arc<RwLock<NotificationCreator>>§notification_deleter: Arc<RwLock<NotificationDeleter>>§notification_runner: Arc<RwLock<NotificationRunner>>§scheduler: Arc<RwLock<Scheduler>>§shutdown_notifier: Option<Arc<RwLock<Box<dyn FnMut() -> Pin<Box<dyn Future<Output = ()> + Send>> + Send + Sync>>>>

Implementations§

Source§

impl JobsSchedulerLocked

Source

pub async fn inited(&self) -> bool

Get whether the scheduler is initialized

Source

pub async fn init(&mut self) -> Result<(), JobSchedulerError>

Initialize the actors

Source

pub async fn new() -> Result<Self, JobSchedulerError>

Create a new MetaDataStorage and NotificationStore using the SimpleMetadataStore, SimpleNotificationStore, SimpleJobCode and SimpleNotificationCode implementation

Source

pub async fn new_with_storage_and_code( metadata_storage: Box<dyn MetaDataStorage + Send + Sync>, notification_storage: Box<dyn NotificationStore + Send + Sync>, job_code: Box<dyn JobCode + Send + Sync>, notification_code: Box<dyn NotificationCode + Send + Sync>, ) -> Result<Self, JobSchedulerError>

Create a new JobsSchedulerLocked using custom metadata and notification runners, job and notification code providers

Source

pub async fn add(&self, job: JobLocked) -> Result<Uuid, JobSchedulerError>

Add a job to the JobScheduler

use tokio_cron_scheduler::{Job, JobScheduler, JobToRun};
let mut sched = JobScheduler::new();
sched.add(Job::new("1/10 * * * * *".parse().unwrap(), || {
    println!("I get executed every 10 seconds!");
})).await;
Source

pub async fn remove( &self, to_be_removed: &Uuid, ) -> Result<(), JobSchedulerError>

Remove a job from the JobScheduler

use tokio_cron_scheduler::{Job, JobScheduler, JobToRun};
let mut sched = JobScheduler::new();
let job_id = sched.add(Job::new("1/10 * * * * *".parse().unwrap(), || {
    println!("I get executed every 10 seconds!");
}))?.await;
sched.remove(job_id).await;

Note, the UUID of the job can be fetched calling .guid() on a Job.

Source

pub async fn start(&self) -> Result<(), JobSchedulerError>

The start spawns a Tokio task where it loops. Every 500ms it runs the tick method to increment any any pending jobs.

if let Err(e) = sched.start().await {
        eprintln!("Error on scheduler {:?}", e);
    }
Source

pub async fn time_till_next_job( &mut self, ) -> Result<Option<Duration>, JobSchedulerError>

The time_till_next_job method returns the duration till the next job is supposed to run. This can be used to sleep until then without waking up at a fixed interval.AsMut

Source

pub async fn next_tick_for_job( &mut self, job_id: Uuid, ) -> Result<Option<DateTime<Utc>>, JobSchedulerError>

next_tick_for_job returns the date/time for when the next tick will be for a job

Source

pub async fn shutdown(&mut self) -> Result<(), JobSchedulerError>

Shut the scheduler down

Source

pub fn set_shutdown_handler( &mut self, job: Box<dyn FnMut() -> Pin<Box<dyn Future<Output = ()> + Send>> + Send + Sync>, )

Code that is run after the shutdown was run

Source

pub fn remove_shutdown_handler(&mut self)

Remove the shutdown handler

Source

pub fn context(&self) -> Arc<Context>

Get the context

Trait Implementations§

Source§

impl Clone for JobsSchedulerLocked

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more