支持异步的acm的python客户端。

aioacm-sdk-python的Python项目详细描述


用户指南

pypi versionlicense

简介

支持异步的用于acm的python sdk。

功能

  1. 使用rest api从acm服务器获取/发布/删除配置。
  2. 从服务器监视配置更改。
  3. 服务器故障时自动故障转移。
  4. 支持TLS。
  5. 支持地址服务器。
  6. 支持阿里云ACM和独立部署。

支持的python:

  1. 巨蟒3.5
  2. python 3.6

支持的ACM版本

  1. ACM 1.0

更改日志

安装

对于python 3.5及以上版本:

pip install aioacm-sdk-python

开始

importaioacmENDPOINT="acm.aliyun.com:8080"NAMESPACE="**********"AK="**********"SK="**********"# get configclient=aioacm.ACMClient(ENDPOINT,NAMESPACE,AK,SK)data_id="com.alibaba.cloud.acm:sample-app.properties"group="group"print(asyncio.get_event_loop().run_until_complete(client.get(data_id,group)))# add watchimporttimeclient.add_watcher(data_id,group,lambdax:print("config change detected: "+x))asyncio.get_event_loop().run_until_complete(asyncio.sleep(5))# wait for config changes

配置

client = ACMClient(endpoint, namespace, ak, sk)
  • 端点-必需-ACM服务器地址。
  • 命名空间-命名空间。|默认值:默认租户
  • AK-阿里云ACM的AccessKey。|默认值:
  • SK-阿里云ACM的SecretKey。|默认值:

附加选项

可通过设置选项设置额外选项,如下所示:

client.set_options({key}={value})

可配置的选项有:

  • 默认超时-从服务器获取配置的默认超时(秒)。
  • TLS U已启用-是否使用https。
  • 已启用身份验证-是否使用身份验证功能。
  • CAI_已启用-是否使用地址服务器。
  • 拉入超时-长轮询超时(秒)。
  • 拉取配置大小-一个轮询进程监听的最大配置项目数。
  • 回调线程数-调用回调的并发性。
  • 故障转移库-存储故障转移配置文件的目录。
  • 快照库-存储快照配置文件的目录。
  • 应用程序名称-客户端应用程序标识符。
  • 无快照-若要禁用默认快照行为,可以通过get方法中的paramno_snapshot重写此操作。

API参考

获取配置

< Buff行情>

acmclient.get(数据标识、组、超时、无快照)

  • param数据id数据id.

  • param如果未指定组,请使用默认组。

  • param请求服务器超时(秒)。

  • param没有快照服务器不可用时是否使用本地快照。

  • 返回 W 按优先级获取一个配置项的值:

  • 步骤1-从本地故障转移目录获取(默认值:${cwd}/acm/data)。

    • 可以提前从快照目录(默认:${cwd}/acm/snapshot)手动复制故障转移目录。
    • 这有助于抑制已知服务器故障的影响。
  • 步骤2-从一台服务器获取,直到获取值或尝试所有服务器。

    • 从服务器获取内容后,内容将保存到快照目录。
  • 步骤3-从快照目录获取。

添加观察者

< Buff行情>

acmclient.add_watchers(数据id,组,cb_list)

  • param数据id数据id.
  • paramgroup组,使用de>默认组如果未指定组。
  • paramcb_list要添加的回调函数列表。
  • 返回

将监视程序添加到指定的配置项。

  • 更改或删除项目后,将调用回调函数。
  • 如果该项已存在于服务器中,则回调函数将被调用一次。
  • 允许对一个项进行多次回调,并且所有回调函数都由threading.thread
  • 回调函数是从当前进程调用的。

删除监视程序

< Buff行情>

acmclient.remove_watcher(数据ID、组、CB、全部删除)

  • param数据id数据id.
  • param如果未指定组,请使用"默认组"。
  • paramcb要删除的回调函数。
  • param全部删除是删除所有出现的回调还是只删除一次。
  • 返回

从指定的键中删除观察程序。

列出所有配置

< Buff行情>

acmclient.list_all(组,前缀)

  • param只返回组匹配的数据标识,默认为无。
  • paramgroup只返回带前缀的dataid startswith,默认值为none区分大小写
  • 返回数据项列表。

获取当前命名空间的所有配置项,仅包含dataid和组信息。

  • 警告:如果命名空间中有大量配置,则此函数可能需要一些时间。

发布配置

< Buff行情>

acmclient.publish(数据标识、组、内容、超时)

  • param数据id数据id.
  • param如果未指定组,请使用"默认组"。
  • 参数内容配置值。
  • param请求服务器超时(秒)。
  • 如果成功或将引发异常,则返回true。

向ACM发布一个数据项。

  • 如果数据密钥不存在,请先创建一个。
  • 如果数据密钥存在,请更新到指定的内容。
  • 内容不能设置为"无",如果需要删除配置项,请改用"删除"功能。

删除配置

< Buff行情>

acmclient.remove_watcher(数据ID、组、CB、全部删除)

  • param数据id数据id.
  • param如果未指定组,请使用"默认组"。
  • param请求服务器超时(秒)。
  • 如果成功或将引发异常,则返回true。

从ACM中删除一个数据项。

调试模式

调试模式(如果有助于获得更详细的控制台登录信息)。

调试模式可通过设置:

ACMClient.set_debugging()
# only effective within the current process

cli工具

一个cli工具与python sdk一起,可以方便地访问和管理acm服务器中的配置项。

安装后,可以直接使用acm{subcommand},可用的子命令如下:

    add                 add a namespace
    use                 switch to a namespace
    current             show current endpoint and namespace
    show                show all endpoints and namespaces
    list                get list of dataIds
    pull                get one config content
    push                push one config
    exportexport dataIds to local files
    import              import files to ACM server

使用acm-h查看详细手册。

数据安全选项

ACM允许您在加密数据的同时,还可以使用阿里云提供的密钥管理服务(也称为KMS)对数据进行加密。

要使用此功能,您可以执行以下步骤:

  1. 通过pip安装aliyun python sdk kms来安装kms sdk
  2. 密码-前缀命名数据ID。
  3. 获取并填充所有需要的配置在acmclient上,需要的信息有:region\u idkms\u akkms\u secretkey\u id
  4. 只需调用api,sdk就会自动处理数据加密和解密。

示例:

c = acm.ACMClient(ENDPOINT, NAMESPACE, AK, SK)
c.set_options(kms_enabled=True, kms_ak=KMS_AK, kms_secret=KMS_SECRET, region_id=REGION_ID, key_id=KEY_ID)

# publish an encrypted config item.
await c.publish("cipher-dataId", None, "plainText")

# get the content of an encrypted config item.
await c.get("cipher-dataId", None)

其他资源

  • 阿里云ACM主页:https://www.aliyun.com/product/acm rel="nofollow">https://www.aliyun.com/product/acm

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何解决这个索引越界问题   HQL表达式中的java Null   未使用mongojackson删除java文档   windows Java编译了我的程序,但我无法运行它   java获取泛型T的类型   用于非IBM Windows计算机的java IBM SDK 7?   java数据库上多线程插入(更新)和单线程顺序插入(更新)的性能比较?   集合是否存在只接受一个条目并允许从映射中获取值的Java映射?   带有共享主键的JavaSpring数据JPA:OneToOne似乎不起作用   java与<>的区别?方法和变量声明中的超级/扩展字符串>   java从终端以调试模式运行jar   java如何找出谁破坏了密钥类型的事件?   osgi在Java中访问一个包的多个版本   如果输入不是整数,java会反复请求用户输入   在java中导入本地库错误   JavaE(fx)剪辑:带有javafx的首选项页面   基本Java映射的orm对象哈希映射(将POJO映射为映射)