跳转到主要内容

利用dynamodb的分布式增加/减少计数器

项目描述

Build Status Documentation Status

概述

distributed_counter 是一个用于在计算机集群间维护计数器的Python包。它利用 AWS DynamoDB 进行存储和计数器的原子性。

安装

distributed_counterpython2python3 兼容。只需使用 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')

还有一些特殊的参数 configendpoint_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 (4.8 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面