教程 pingora tutorial

后台服务

Pingora 支持 后台服务(Background Service),用于执行长期运行的任务,如监控、日志收集和定时作业。

特性

  • 与主代理服务并行运行
  • 使用异步运行时执行任务
  • 可与上下文(CTX)和过滤器配合使用

创建后台任务

rust
use tokio::time::{sleep, Duration};

async fn background_task() {
    loop {
        println!("后台任务运行中...");
        sleep(Duration::from_secs(10)).await;
    }
}

#[tokio::main]
async fn main() {
    tokio::spawn(background_task()); // 启动后台任务
    let server = Server::new(None).unwrap();
    server.bootstrap();

    let app = http_proxy_service(None);
    server.run_forever(app).unwrap();
}

`

  • tokio::spawn 用于启动独立的异步任务
  • 后台任务可执行日志记录、数据同步或监控指标更新

定时任务示例

rust
use tokio::time::{interval, Duration};

async fn scheduled_task() {
    let mut interval = interval(Duration::from_secs(60));
    loop {
        interval.tick().await;
        println!("每分钟执行一次的任务");
    }
}
  • 使用 interval 实现周期性执行
  • 适合定时健康检查或定期数据处理

与主服务集成

  • 后台任务不会阻塞主代理服务
  • 可通过 CTX 或共享数据与请求处理逻辑通信
  • 支持错误捕获与重试机制,保证任务稳定运行

通过后台服务,Pingora 可以在保持高性能请求处理的同时,运行长期任务,实现监控、日志和定时作业等功能。