Skip to main content

异步操作

我们有几个示例程序展示了异步数据库适配器的使用:

Diesel

当前版本的 Diesel(v1/v2)不支持异步操作,因此需要使用 web::block 函数将数据库操作转移到 Actix 的运行时线程池。

你可以在应用中创建任意数据库操作函数。


现在,你应该使用诸如 r2d2 来设置数据库连接池。这意味着多个处理程序可以同时操作数据库,并且仍然可以接受新连接。简单地说,将连接池放在应用状态中。(在这种情况下,最好不要使用状态包装器结构,因为连接池池已经为你处理了共享访问。)


现在,在一个请求处理程序中,可以使用 Data<T> 提取器从状态中获取一个数据库连接。将这个数据库连接传递给 web::block 闭包。接下来只需要调用操作函数并 .await 结果。

例子中,在最后一个 ? 操作符之前,还将错误映射到 HttpResponse,但是如果返回的错误类型实现了 ResponseError,则无需这样做。


就是这样!点击此处查看完整示例:https://github.com/actix/examples/tree/master/databases/diesel