Rust中的後臺作業 - kerkour
對於經常性工作(又名 CRON 工作),我個人使用lightspeed_scheduler:
let job = Job::new("kernel", "dispatch_delete_old_data", Some(3), move || { let kernel_service_inner = kernel_service.clone(); Box::pin(async move { kernel_service_inner.dispatch_delete_old_data().await?; Ok(()) }) }); scheduler .add_job_with_scheduler( "* 0 4 * * *" .to_scheduler() .expect("scheduler.run: parsing kernel.delete_old_data cron expression"), job, ) .await; info!("scheduler.run: Starting scheduler."); scheduler.run().await?.await?; |
tokio-cron-scheduler是一個很好的(也許更簡單)的替代方案。
let mut scheduler = JobScheduler::new(); scheduler.add(Job::new("1/10 * * * * *", |uuid, l| { println!("I run every 10 seconds"); }).expect("defining 10 seeconds job")); scheduler.add(Job::new_async("1/7 * * * * *", |uuid, l| Box::pin( async { println!("I run async every 7 seconds"); })).expect("defining 7 seeconds job")); scheduler.start().await; |
一次性後臺作業
對於一次性的後臺工作,例如傳送事務性電子郵件,我們需要一個佇列。
我已經在如何使用 Rust 和 PostgreSQL 構建作業佇列中討論了這個主題,我仍然強烈推薦這個解決方案,因為它的操作簡單性和效能都很好!
// queue job let job = Message::SendSignInEmail { email: "your@email.com".to_string(), name: "Sylvain Kerkour".to_string(), code: "000-000".to_string(), }; let _ = queue.push(job, Some(Utc::now())).await?; |
相關文章
- 學習Rust的心智模型 - kerkourRust模型
- 2022年選擇哪個Rust Web框架 - kerkourRustWeb框架
- 什麼情況下不要用Rust語言? - kerkourRust
- [Abp 原始碼分析]十六、後臺作業與後臺工作者原始碼
- CRM, C4C和Hybris的後臺作業
- Rust編譯器比其他語言更能捕獲隱藏的錯誤 - kerkourRust編譯
- 微信後臺開發作業講解
- 使用 Rust 執行 Cron 作業Rust
- Redox OS:基於Rust的作業系統Rust作業系統
- 與 Rust 勾心鬥角 · 作業Rust
- 如何讓 ABAP 報表在後臺作業的模式下執行模式
- 類似Quartz的分散式Java後臺作業計劃程式:JobRunrquartz分散式Java
- 分散式後臺作業排程器JobRunr介紹 - JAXenter分散式
- 如何在Spring中使用JobRunr實現後臺作業? - BaeldungSpring
- JAVA課後作業Java
- PHP熟手使用Rust作為後端開發語言PHPRust後端
- Aero:用rust編寫的新現代作業系統Rust作業系統
- 第四期訓練營-rust for linux 作業RustLinux
- stardust-oxide:基於Rust的開源迷你作業系統UnikernelIDERust作業系統
- Asynq 實現 Go 後臺作業非同步定時任務處理Go非同步
- 薄平臺:Stripe的金融作業系統作業系統
- 中臺建設中的幕後意義
- 面向企業中後臺產品的設計系統大合集
- 美團後臺篇中的ReentrantLockReentrantLock
- rust跨平臺Rust
- rust-raspberrypi-OS-tutorials:用Rust編寫樹莓派嵌入式作業系統的學習教程Rust樹莓派作業系統
- Rust中後端的清潔Clea架構原始碼專案Rust後端架構原始碼
- 第一次課後作業的提交
- 作業0 部落格讀後感
- 線上教育平臺開發中,作業功能中的圖片上傳是如何實現的
- 中後臺專案 - 查詢表格業務最佳實踐
- 鏈家分散式作業平臺分散式
- Blaze:基於Rust加速器用更少資源加速Spark作業RustSpark
- 愚人節惡作劇:Rust的“goto”實現RustGo
- Rust中Turbofish之函式後面雙冒號(::)用法Rust函式
- 一套通用的企業級中後臺前端設計解決方案前端
- Vue3+Vite2.6+TypeScript+Ant-design-vue構建企業級中後臺響應式管理後臺VueViteTypeScript
- OOP最後兩次作業總結OOP