simple_jobs 0.1.0

Very simple persistence layer on top of Tokio tasks.
Documentation

Very simple persistent jobs

A simple wrapper for Tokio tasks, where the tasks are saved to a backend of choice, undefined undefined and they can be queried for their status.

As an example, the crate provides the implementation for saving tasks to the filesystem.

Defining the backend

The trait [Job] requires the functions [Job::save] and [Job::load] that save and restore the struct [JobInfo].

Using the [FSJob] implementation

The struct [FSJob] implements the trait [Job] by saving and restoring the job information from the filesystem. Each job gets a unique file, constructed from the unique job id.

Example:

# use simple_jobs::{self, Job, FSJob};
# use serde::{Deserialize, Serialize}; 
# #[derive(Clone, Serialize, Deserialize, Debug)]
# struct MyError {}
# 
async fn example() -> std::io::Result<()> {
let job: FSJob<u16, MyError> = FSJob::new("/tmp".into());
let id = job.submit(|id, job| async move {
Ok(0u16)
})?;
let info = job.load(id)?;
println!("Job status: {:?}", info.status);
Ok(())
}