apopy


Nameapopy JSON
Version 0.1.6 PyPI version JSON
download
home_pageNone
SummarySimple Apollo Config Client for Python.
upload_time2024-10-25 14:22:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # apopy: Simple Apollo Config Client for Python. [![PyPI](https://img.shields.io/pypi/v/apopy)](https://pypi.org/project/apopy/)

```bash
pip install apopy
```

## Quick Start

> [!NOTE]
>
> - 示例里的配置信息仅供测试使用,请勿用于生产环境。
> - 具体的配置可能会变动,仅用于说明使用方法,具体的访问方式见
  > <https://www.apolloconfig.com/#/zh/README>

```python
from apopy import Client, NamespaceType

client = Client(
    config_server_url="http://81.68.181.139:8080",
    app_id="apollo-common",
    cluster_name="default",
    secret="5fdc723621054e0f945cb441561687eb",
    ip="192.168.1.4",
)

# 读取 Namespace 为 application 的配置(接口带缓存)
print(client.read_namespace_with_cache(namespace="application"))

# 读取 Namespace 为 application 的配置(接口无缓存)
print(
    client.read_namespace_without_cache(
        namespace="application", namespace_type=NamespaceType.PROPERTIES
    )
)

# 读取配置
print(client.get("test"))
```

### 配置轮训更新

Apopy 提供了内置的针对单独 namespace 配置轮训更新功能,可以通过以下方式实现:

> [!WARNING]
>
> Apopy 本身并没有配置单独的线程锁/进程锁,如果真的需要异步订阅更新,
> 请根据自己的需求在外层加上锁保护。

```python
import time
import threading


def start_background_update(client: Client):

    def _update():
        while True:
            try:
                client.read_notification_and_update(
                    namespace="application", namespace_type=NamespaceType.PROPERTIES
                )
            except Exception:
                pass
            finally:
                time.sleep(3)

    t = threading.Thread(target=_update)
    t.start()


start_background_update(client)
while True:
    print(client.read_namespace_with_cache(namespace="application"))
    time.sleep(5)
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "apopy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "ringsaturn <ringsaturn.me@gmail.com>",
    "keywords": null,
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/db/0c/a19fd2781b7734dcbca9875d22b9cc3af993ad348323063e8db2a2f3c40b/apopy-0.1.6.tar.gz",
    "platform": null,
    "description": "# apopy: Simple Apollo Config Client for Python. [![PyPI](https://img.shields.io/pypi/v/apopy)](https://pypi.org/project/apopy/)\n\n```bash\npip install apopy\n```\n\n## Quick Start\n\n> [!NOTE]\n>\n> - \u793a\u4f8b\u91cc\u7684\u914d\u7f6e\u4fe1\u606f\u4ec5\u4f9b\u6d4b\u8bd5\u4f7f\u7528\uff0c\u8bf7\u52ff\u7528\u4e8e\u751f\u4ea7\u73af\u5883\u3002\n> - \u5177\u4f53\u7684\u914d\u7f6e\u53ef\u80fd\u4f1a\u53d8\u52a8\uff0c\u4ec5\u7528\u4e8e\u8bf4\u660e\u4f7f\u7528\u65b9\u6cd5\uff0c\u5177\u4f53\u7684\u8bbf\u95ee\u65b9\u5f0f\u89c1\n  > <https://www.apolloconfig.com/#/zh/README>\n\n```python\nfrom apopy import Client, NamespaceType\n\nclient = Client(\n    config_server_url=\"http://81.68.181.139:8080\",\n    app_id=\"apollo-common\",\n    cluster_name=\"default\",\n    secret=\"5fdc723621054e0f945cb441561687eb\",\n    ip=\"192.168.1.4\",\n)\n\n# \u8bfb\u53d6 Namespace \u4e3a application \u7684\u914d\u7f6e\uff08\u63a5\u53e3\u5e26\u7f13\u5b58\uff09\nprint(client.read_namespace_with_cache(namespace=\"application\"))\n\n# \u8bfb\u53d6 Namespace \u4e3a application \u7684\u914d\u7f6e\uff08\u63a5\u53e3\u65e0\u7f13\u5b58\uff09\nprint(\n    client.read_namespace_without_cache(\n        namespace=\"application\", namespace_type=NamespaceType.PROPERTIES\n    )\n)\n\n# \u8bfb\u53d6\u914d\u7f6e\nprint(client.get(\"test\"))\n```\n\n### \u914d\u7f6e\u8f6e\u8bad\u66f4\u65b0\n\nApopy \u63d0\u4f9b\u4e86\u5185\u7f6e\u7684\u9488\u5bf9\u5355\u72ec namespace \u914d\u7f6e\u8f6e\u8bad\u66f4\u65b0\u529f\u80fd\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u5b9e\u73b0\uff1a\n\n> [!WARNING]\n>\n> Apopy \u672c\u8eab\u5e76\u6ca1\u6709\u914d\u7f6e\u5355\u72ec\u7684\u7ebf\u7a0b\u9501/\u8fdb\u7a0b\u9501\uff0c\u5982\u679c\u771f\u7684\u9700\u8981\u5f02\u6b65\u8ba2\u9605\u66f4\u65b0\uff0c\n> \u8bf7\u6839\u636e\u81ea\u5df1\u7684\u9700\u6c42\u5728\u5916\u5c42\u52a0\u4e0a\u9501\u4fdd\u62a4\u3002\n\n```python\nimport time\nimport threading\n\n\ndef start_background_update(client: Client):\n\n    def _update():\n        while True:\n            try:\n                client.read_notification_and_update(\n                    namespace=\"application\", namespace_type=NamespaceType.PROPERTIES\n                )\n            except Exception:\n                pass\n            finally:\n                time.sleep(3)\n\n    t = threading.Thread(target=_update)\n    t.start()\n\n\nstart_background_update(client)\nwhile True:\n    print(client.read_namespace_with_cache(namespace=\"application\"))\n    time.sleep(5)\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Simple Apollo Config Client for Python.",
    "version": "0.1.6",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1735b1c11ae2abdb5dfbdfe4dfaa9c70cc97bfd6a276ad8560fb1c3b66e7c7ca",
                "md5": "8a2604fa9b02c436ef23396dd432d185",
                "sha256": "b54cf931c60ed0d07dd15b3670d8fc32efdf992a09173d20e1509789085e58be"
            },
            "downloads": -1,
            "filename": "apopy-0.1.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8a2604fa9b02c436ef23396dd432d185",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 5160,
            "upload_time": "2024-10-25T14:22:46",
            "upload_time_iso_8601": "2024-10-25T14:22:46.708971Z",
            "url": "https://files.pythonhosted.org/packages/17/35/b1c11ae2abdb5dfbdfe4dfaa9c70cc97bfd6a276ad8560fb1c3b66e7c7ca/apopy-0.1.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "db0ca19fd2781b7734dcbca9875d22b9cc3af993ad348323063e8db2a2f3c40b",
                "md5": "b1a949ade31ccc913082bcd6836ac31a",
                "sha256": "03af71a6e072f4ac239c42a63b8fdd026f557a152c8864317603ba7d991ab8a5"
            },
            "downloads": -1,
            "filename": "apopy-0.1.6.tar.gz",
            "has_sig": false,
            "md5_digest": "b1a949ade31ccc913082bcd6836ac31a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 11708,
            "upload_time": "2024-10-25T14:22:48",
            "upload_time_iso_8601": "2024-10-25T14:22:48.273394Z",
            "url": "https://files.pythonhosted.org/packages/db/0c/a19fd2781b7734dcbca9875d22b9cc3af993ad348323063e8db2a2f3c40b/apopy-0.1.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-25 14:22:48",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "apopy"
}
        
Elapsed time: 0.67254s