Skip to main content

Python3 Client for Ctrip's Apollo

Reason this release was yanked:

py3-apollo-client==1.0.2

Project description

py3-apollo-client - Python3 Client for Ctrip's Apollo

License

方便Python接入配置中心框架 Apollo 所开发的Python版本客户端。

基于 onecer/apollo-python 修改, 主要修复配置未更新也会触发change_listener

链接


依赖


  • python 3.x

安装


pip install py3-apollo-client

使用


导入包

from apollo import ApolloClient
app_id = 'demo-service'
config_url = 'http://127.0.0.1:8080'
cluster = 'default'
secret = ''
env = 'DEV'

client = ApolloClient(app_id=app_id, config_url=config_url, cluster=cluster, secret=secret, env=env)
lm_API_KEY = client.get_value("lm_API_KEY")

也默认支持通过环境变量来传递值,基本和 Java 客户端保持一致

客户端初始化参数

参数 说明 默认值 环境变量
app_id 应用名 APP_ID
config_url 配置中心地址 http://127.0.0.1:8080 ${ENV}_META or APOLLO_META
cluster 集群名 default IDC
secret 访问密钥 APOLLO_ACCESS_KEY_SECRET
env 环境 DEV ENV
client_ip 客户端ip 获取当前 IP CLIENT_IP
cache_path 配置缓存路径 tmp/apollo/cache APOLLO_CACHE_PATH
need_hot_update 是否需要热更新 True -
change_listener 配置变更监听器(回调函数) None -
log_level 日志级别 INFO LOG_LEVEL
notification_map 通知配置 (dict) None -

配置变更监听器 change_listener

"""
接受 4 个参数 
action:delete \ add  \ update
namespace:namespace
key:key
old_value:old_value
"""
def change_listener(action, namespace, key, old_value):
    print(f"action:{action} namespace: {namespace} key: {key} old_value: {old_value}")

通知配置 notification_map

notification_map = {
    "application": ["application"],
    "application.yml": ["application.yml"]
}

配置优先级

*** 环境变量 > 代码配置 ***

如果环境变量存在,则优先使用环境变量的值。

如果环境中存在 ENV的环境变量, 如 ENV=DEV。则优先组合出 DEV_META 这个环境变量名称来获取 config url。 如果该环境变量不存在,则取 APOLLO_META 环境变量的值。如果 APOLLO_META 也不存在,则使用代码定义的 config_url 的值。

其它环境变量同理,以此类推。

热更新

默认会启动一个线程来定时更新本地缓存的配置,所以,如果每次用的是 get_value 来获取配置,可以实现配置热更新。

本地打包 wheel

# install uv
pip install uv

# build
uv build

# upload
uv publish --token <TOKEN>

License


This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py3_apollo_client-1.0.2.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py3_apollo_client-1.0.2-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file py3_apollo_client-1.0.2.tar.gz.

File metadata

  • Download URL: py3_apollo_client-1.0.2.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.0

File hashes

Hashes for py3_apollo_client-1.0.2.tar.gz
Algorithm Hash digest
SHA256 d09e977e93b78a0cd21faac76db21929b84a3d18081efd98cd43370d6e00a7ca
MD5 889cef162f655bfd7f45c07b3aa16218
BLAKE2b-256 fbddea6db3f1df0e83b43df2172b3991b4639ec96981f1419dfe6197a8868afe

See more details on using hashes here.

File details

Details for the file py3_apollo_client-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for py3_apollo_client-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 47915641332666fb00dda8e3144dd87b477155040d234abc082b31e266d700bf
MD5 cfa939cb6ed23ed8adaed018f31918ac
BLAKE2b-256 ac300ae698e2e93dee57864d0afe930dc1c83f1ec9e710b5134cabd4c72110a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page