tdm_server_rust/task/
rss_task.rs1use crate::{
2 app::AppState,
3 service::rss_service::{self, RssService},
4 telemetry::skywalking,
5};
6
7pub fn spawn_startup_rss_refresh(state: AppState) {
9 tokio::spawn(async move {
10 skywalking::with_bootstrap_context("rss.startup_refresh", "rss", async {
11 if let Err(e) = RssService::run_startup_refresh(&state).await {
12 tracing::error!(error = ?e, "RSS 启动全量刷新失败");
13 } else {
14 tracing::info!("RSS 启动全量刷新完成");
15 }
16 })
17 .await;
18 });
19}
20
21pub fn spawn_daily_reminder_rss(state: AppState) {
23 tokio::spawn(async move {
24 loop {
25 let wait = rss_service::duration_until_noon_shanghai();
26 tracing::debug!(?wait, "RSS reminder 等待下次 12:00");
27 tokio::time::sleep(wait).await;
28 skywalking::with_bootstrap_context("rss.daily_reminder", "rss", async {
29 if let Err(e) = RssService::rss_reminder(&state).await {
30 tracing::error!(error = ?e, "RSS reminder 生成失败");
31 } else {
32 tracing::info!("RSS reminder 生成完毕");
33 }
34 })
35 .await;
36 }
37 });
38}