14 个重大版本发布

0.22.0 2023 年 11 月 26 日
0.20.0 2023 年 11 月 10 日
0.15.0 2023 年 5 月 26 日
0.12.0 2023 年 1 月 27 日
0.9.0 2022 年 10 月 27 日

#322数据库接口

Download history 4/week @ 2024-07-01 60/week @ 2024-07-22

每月 64 次下载

MIT/Apache

23KB
383

dynamodb-lease

用于在 dynamodb 中获取(即 "租约")的分布式锁的客户端。使用 aws-sdk-dynamodb & tokio

Crates.io Docs.rs

let client = dynamodb_lease::Client::builder()
    .table_name("example-leases")
    .lease_ttl_seconds(60)
    .build_and_check_db(dynamodb_client)
    .await?;

// acquire a lease for "important-job-123"
// waits for any other holders to release if necessary
let lease = client.acquire("important-job-123").await?;
 
// `lease` periodically extends itself in a background tokio task
 
// until dropped others will not be able to acquire this lease
assert!(client.try_acquire("important-job-123").await?.is_none());

// Dropping the lease will asynchronously release it, so others may acquire it
drop(lease);

请参阅 设计文档 和源代码,了解其底层工作原理。

测试

运行 scripts/init-test.sh 以确保 dynamodb-local 在 8000 上运行。

cargo test

AWS 设置

您可能还需要设置一些 aws 配置,例如。

  • 设置 ~/.aws/config
    [default]
    region = eu-west-1
    
  • 使用假值设置 ~/.aws/credentials
    [default]
    aws_access_key_id=12341234
    aws_secret_access_key=12341234
    

依赖项

~15–26MB
~356K SLoC