http - 如何将有状态客户端传递给 lambda 函数?
问题描述
我正在研究一个简单的 Lambda 函数,我想知道是否可以将客户端(这次是 dynamodb)传递给处理程序,因此我们不会为每个请求重新连接。
宏在这里定义:
https://docs.rs/lambda_http/0.1.1/lambda_http/macro.lambda.html 3
到目前为止我的功能:
fn main() -> Result<(), Box<dyn Error>> {
simple_logger::init_with_level(log::Level::Debug)?;
info!("Starting up...");
let dynamodb_client = DynamoDbClient::new(Region::EuCentral1);
lambda!(router);
return Ok(());
}
fn router(req: Request, ctx: Context) -> Result<impl IntoResponse, HandlerError> {
let h_req = HReq {
http_path: req.uri().path(),
http_method: req.method(),
};
match h_req {
HReq {
http_path: "/login",
http_method: &Method::POST,
} => user_login(req, ctx),
_ => {
error!(
"Not supported http method or path {}, {}",
h_req.http_path, h_req.http_method
);
let mut resp = Response::default();
*resp.status_mut() = StatusCode::METHOD_NOT_ALLOWED;
Ok(resp)
}
}
}
是否可以将此宏扩展为具有第二个选项,以便我可以将客户端一直添加到实际与数据库通信的功能?
解决方案
DynamoDB 是一种 Web 服务,对它的每个请求都被视为不同的 API 调用。
没有任何功能可以像使用常规数据库连接(例如 MySQL)一样保持客户端连接处于活动状态。
我的 rust 知识有点欠缺,所以不知道 DynamoDBClient 是否默认设置了 http keepalive,但确保设置了 http keepalive 有助于提高性能。
推荐阅读
- woocommerce - 使用备注添加到购物车 (woocommerce)
- javascript - 组件挂载React后如何将数组添加到useState数组
- java - 为什么 IntelliJ 显示未找到依赖项 'org.slf4j:slf4j-simple:1.7.25'?
- tensorflow - SageMaker Predictor 仅输出 0 和 1,我需要介于 0 和 1 之间的浮点数
- google-chrome - 基于 WebRTC 的音频/视频会议是否有如此多的点对点或所有上传都混合在某个地方并发回?
- python - 在 Python 函数中返回局部变量的问题
- c# - 遵从 C# 列表
外部指针 - arrays - 数组的元素类型不完整。这是什么意思?
- sql-server - SQL Server 作业偶尔会卡住
- pyspark - 如何阻止 pyspark 数据框更改为列表?