利用dynamodb的分布式增加/减少计数器
项目描述
概述
distributed_counter
是一个用于在计算机集群间维护计数器的Python包。它利用 AWS DynamoDB 进行存储和计数器的原子性。
安装
distributed_counter
与 python2
和 python3
兼容。只需使用 pip
安装即可。
pip install distributed_counter
您还需要设置您的 aws 配置。
用法
distributed_counter
的接口非常简单。所有操作都通过 DistributedCounter
类完成。要实例化
from distributed_counter import DistributedCounter
counter = DistributedCounter('my_dynamo_table_name')
您可以将任何内容传递到 kwargs
中,并将其传播到 boto3 Session,例如。
counter = DistributedCounter('mytable', region_name='us-west-1', aws_access_key_id='somekey',
aws_secret_access_key='somesecret')
还有一些特殊的参数 config
和 endpoint_url
,它们会被传递到 DynamoDB ServiceResource。
表创建
dynamodb 表有一个名为 key
的 HASH 键。您可以自己创建表,或者可以使用 create_table
。
counter.create_table()
distributed_counter
非常智能,足以在您下一次调用表时等待表的创建完成。
获取/设置
接下来,您可以使用 put
设置键,使用 get
获取它
counter.put('mykey', 0)
counter.get('mykey')
0
增加/减少
最后,您可以 increment
/decrement
。
counter.increment('mykey', 10)
10
counter.increment('mykey', 5)
15
counter.decrement('mykey', 14)
1
请注意,返回值是新值。
您可以使用 increment
/decrement
与默认值一起使用。这相当于先 put
然后再 increment
/decrement
。
counter.increment('nonexistantkey', 0, 0)
0
counter.increment('someotherkey', 0, 10)
10
counter.increment('yetanotherkey', 1, 10)
11
示例用法
假设我们希望在API调用100次后运行一个函数。在您的API中,您可以放
if not counter.increment('mykey', 1) % 100:
run_function()
counter.decrement('mykey', 100)
这保证了无论您有多少服务器,您的API每100次调用都会运行您的函数。
这里使用模运算符而不是 ==
,因为存在一个假设的情况,即在减法完成之前,您可能已经将计数器增加到200。
项目详情
关闭
distributed_counter-0.0.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ee478bd1d4e3fcf9b59c10d7622b3067e7c690cf9cf7e1633090f141cf00dcf |
|
MD5 | adb54601d8ddce8426e7c3675c874ca3 |
|
BLAKE2b-256 | 70f7bdf2d62e068abd3da01e63825fc58deb2a37fc0c5e00350c8095ae9fe5f4 |