
GitHub:https://github.com/mgunyho/tere
unused-features analyzeunused-features build-report --input "C:/some_path/report.json"unused-features prune --input "C:/some_path/report.json"#[tokio::main]async fn main() { let pool_size = 7; let max_overflow = 4; // 使用 pool channel 创建一个通讯的 session
let session = Pool::new(pool_size,
max_overflow,
|| {Box::pin(async move { // tokio_postgres 创建连接
let (client, connection) = tokio_postgres::connect("host=localhost user=postgres", NoTls)
.await.unwrap();
tokio::spawn(async move { if let Err(e) = connection.await {
eprintln!("connection error: {}", e);
}
});
client
})}).await.run_service();
// session.clone() 内部调用 channel mpsc::Sender::Clone
process(session.clone()).await;
process(session.clone()).await;
process(session.clone()).await; // 等待直到所有的 pending 被处理,然后关闭
session.safe_shutdown().await
tokio::time::sleep(Duration::from_secs(100)).await;
}pub async fn process(session: Session<Client>) { // 检验来自 Pool 的资源
if let Ok(mut client) = session.block_checkout().await { // ============== start ===================
let _rows = client
.get()
.query("SELECT $1::TEXT", &[&"hello world"])
.await.unwrap(); // ============== end ===================
// 所有job完成后调用 checkin
let _ = session.checkin(client).await; // 或者,如果销毁资源,调用
// session.destroyed(resource).await;
}
}
From 日报小组 长琴
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。