#job #tasks #tokio #persistence #status #save #back-end

simple_jobs

基于Tokio任务的简单持久化层

5个版本

0.2.2 2022年6月11日
0.2.1 2022年5月30日
0.2.0 2022年5月30日
0.1.1 2022年4月25日
0.1.0 2022年4月25日

#65 in #persistence

MIT 许可证

21KB
414 行代码(不含注释)

simple_jobs

非常简单的持久化作业

一个简单的Tokio任务的包装器,任务可以保存到选择的后端,并且可以查询它们的状态。

例如,该包提供了将任务保存到文件系统的实现。

定义后端

特质 [Job] 需要函数 Job::saveJob::load 来保存和恢复结构 JobInfo

使用 FSJob 实现

结构 FSJob 通过从文件系统保存和恢复作业信息来实现特质 [Job]。每个作业都会得到一个独特的文件,由独特的作业ID构建。

示例

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(())
}

许可证:MIT


lib.rs:

非常简单的持久化作业

一个简单的Tokio任务的包装器,任务可以保存到选择的后端,并且可以查询它们的状态。

例如,该包提供了将任务保存到文件系统的实现。

定义后端

特质 [Job] 需要函数 Job::saveJob::load 来保存和恢复结构 JobInfo

使用 FSJob 实现

结构 FSJob 通过从文件系统保存和恢复作业信息来实现特质 [Job]。每个作业都会得到一个独特的文件,由独特的作业ID构建。

示例

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(())
}

依赖

~5–16MB
~194K SLoC