#mobc #pool #connection-pool #async #arango-db #arangors #connection-manager

mobc-arangors

为异步 mobc 连接池提供 ArangoDB 支持

4 个版本

0.2.2 2020年9月4日
0.2.1 2020年9月4日
0.2.0 2020年6月10日
0.1.0 2020年6月4日

#1 in #mobc

MIT 许可证

17KB
80

mobc-arangors

使用 mobc 实现的异步连接池对 arangors 的支持。目前仅支持 reqwest 作为客户端。

示例

use mobc::Pool;
use std::time::Instant;
use mobc_arangors::ArangoDBConnectionManager;

#[tokio::main]
async fn main() {
    let manager = ArangoDBConnectionManager::new("http://arangoserver/", "root", "password", true);
    let pool = Pool::builder().max_open(20).build(manager);
    const MAX: usize = 100;

    let now = Instant::now();
    let (tx, mut rx) = tokio::sync::mpsc::channel::<usize>(16);
    for i in 0..MAX {
        let pool = pool.clone();
        let mut tx_c = tx.clone();
        tokio::spawn(async move {

            let client = pool.get().await.unwrap();
            let db = client.db("_system").await.unwrap();

            let version = db.arango_version().await.unwrap().version;
            assert_eq!(version, "3.6.2");
            tx_c.send(i).await.unwrap();
        });
    }

    for _ in 0..MAX {
        rx.recv().await.unwrap();
    }

    println!("cost: {:?}", now.elapsed());
}

依赖项

~5–20MB
~227K SLoC