处理 Panic
在 Pingora 中,与特定请求相关的 panic 不会影响其他正在进行的请求,也不会影响服务器处理其他请求的能力。发生 panic 的请求会释放(关闭)所使用的套接字。这些 panic 会由 Tokio 运行时捕获并忽略。
监控 Panic
为了监控 panic,Pingora 服务器内置了对 Sentry 的集成。以下代码展示了如何启用 Sentry 支持:
my_server.sentry = Some(
sentry::ClientOptions {
dsn: "SENTRY_DSN".into_dsn().unwrap(),
..Default::default()
}
);
Panic 的使用建议
尽管在 Pingora 中 panic 并非致命问题,但它仍然不是处理诸如网络超时等故障的首选方法。Panic 应仅用于处理意外的逻辑错误。将其作为最后的防线,有助于保持代码的健壮性和清晰性,同时最大限度减少对正常操作的干扰。