1#[cfg(feature = "server")]
6use std::future::Future;
7
8#[cfg(feature = "server")]
14pub fn spawn_supervised(name: &'static str, task: impl Future<Output = ()> + Send + 'static) {
15 let handle = tokio::spawn(task);
16 tokio::spawn(async move {
17 if let Err(error) = handle.await {
18 if error.is_panic() {
19 tracing::error!(task = name, "后台任务 panic,终止进程以便重启");
20 std::process::abort();
21 }
22 }
23 });
24}
25
26#[cfg(feature = "server")]
28pub mod backup;
29#[cfg(feature = "server")]
31pub mod cache_sync;
32#[cfg(feature = "server")]
34pub mod edge_purge;
35#[cfg(feature = "server")]
37pub mod image_cache_cleanup;
38#[cfg(feature = "server")]
40pub mod ip_purge;
41#[cfg(feature = "server")]
43pub mod log_purge;
44#[cfg(feature = "server")]
46pub mod log_writer;
47#[cfg(feature = "server")]
49pub mod orphan_asset_purge;
50#[cfg(feature = "server")]
52pub mod post_purge;
53#[cfg(feature = "server")]
55pub mod session_cleanup;
56#[cfg(feature = "server")]
58pub mod sysinfo_sampler;