# DaaS
[](https://travis-ci.org/ducesoft/babel)
[](https://opencollective.com/babel) [](https://codecov.io/gh/babel/babel)

中文版 [README](README_CN.md)
## Introduction
Mesh is a standard implementation for [Private Transmission Protocol](Specifications.md) specification.
Mesh Python develop kits base on Python3.6. Recommend use [poetry](https://github.com/python-poetry/poetry) to manage
dependencies.
## Features
As an open source Internet of Data infrastructure develop kits, Mesh has the following core functions:
* Minimal kernel with SPI plugin architecture, everything is replacement.
* Support full stack of service mesh architecture.
* Support full stack of service oriented architecture.
* Support transport with TCP, HTTP, or other RPC protocols.
* Support rich routing features.
* Support reliable upstream management and load balancing capabilities.
* Support network and protocol layer observability.
* Support mTLS and protocols on TLS.
* Support rich extension mechanism to provide highly customizable expansion capabilities.
* Support process smooth upgrade.
## Get Started
```bash
poetry add imesh
```
or
```bash
pip install imesh
```
### RPC
Declared rpc interface Facade.
```python
from abc import ABC, abstractmethod
from mesh import spi, mpi
@spi("mesh")
class Tokenizer(ABC):
    @abstractmethod
    @mpi("mesh.trust.apply")
    def apply(self, kind: str, duration: int) -> str:
        """
        Apply a node token.
        :param kind:
        :param duration:
        :return:
        """
        pass
    @abstractmethod
    @mpi("mesh.trust.verify")
    def verify(self, token: str) -> bool:
        """
        Verify some token verifiable.
        :param token:
        :return:
        """
        pass
```
Declared rpc service Implement.
```python
from mesh import mps, Tokenizer
@mps
class MeshTokenizer(Tokenizer):
    def apply(self, kind: str, duration: int) -> str:
        return "foo"
    def verify(self, token: str) -> bool:
        return True
```
Remote reference procedure call.
```python
from mesh import mpi, Tokenizer
class Component:
    @mpi
    def tokenizer(self) -> Tokenizer:
        pass
    def invoke(self) -> bool:
        token = self.tokenizer().apply('PERMIT', 1000 * 60 * 5)
        return self.tokenizer().verify(token)
```
### Transport
Transport is a full duplex communication stream implement.
```python
import mesh
from mesh import Mesh, log, ServiceLoader, Transport, Routable
from mesh.prsim import Header
def main():
    mesh.start()
    transport = Routable.of(ServiceLoader.load(Transport).get("mesh"))
    session = transport.with_address("10.99.1.33:570").local().open('session_id_008', {
        Header.MESH_VERSION.key(): '',
        Header.MESH_TECH_PROVIDER_CODE.key(): 'LX',
        Header.MESH_TRACE_ID.key(): Mesh.context().get_trace_id(),
        Header.MESH_TOKEN.key(): 'x',
        Header.MESH_SESSION_ID.key(): 'session_id_008',
        Header.MESH_TARGET_INST_ID.key(): 'JG0100000100000000',
    })
    for index in range(100):
        inbound = f"节点4发送给节点5报文{index}"
        log.info(f"节点4发送:{inbound}")
        session.push(inbound.encode('utf-8'), {}, "topic")
        outbound = session.pop(10000, "topic")
        if outbound:
            log.info(f"节点4接收:{outbound.decode('utf-8')}")
```
            
         
        Raw data
        
            {
    "_id": null,
    "home_page": "https://github.com/jiumi/meio",
    "name": "daas",
    "maintainer": "coyzeng",
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": "coyzeng@gmail.com",
    "keywords": "servicemesh, rpc, codec, cluster, registry",
    "author": "coyzeng",
    "author_email": "coyzeng@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/ac/c8/945717d9cbc1b710cf28686745447e576f17e86d4af672cbe89e27dcb53b/daas-0.0.14.tar.gz",
    "platform": null,
    "description": "# DaaS\n\n[](https://travis-ci.org/ducesoft/babel)\n[](https://opencollective.com/babel) [](https://codecov.io/gh/babel/babel)\n\n\n\u4e2d\u6587\u7248 [README](README_CN.md)\n\n## Introduction\n\nMesh is a standard implementation for [Private Transmission Protocol](Specifications.md) specification.\n\nMesh Python develop kits base on Python3.6. Recommend use [poetry](https://github.com/python-poetry/poetry) to manage\ndependencies.\n\n## Features\n\nAs an open source Internet of Data infrastructure develop kits, Mesh has the following core functions:\n\n* Minimal kernel with SPI plugin architecture, everything is replacement.\n* Support full stack of service mesh architecture.\n* Support full stack of service oriented architecture.\n* Support transport with TCP, HTTP, or other RPC protocols.\n* Support rich routing features.\n* Support reliable upstream management and load balancing capabilities.\n* Support network and protocol layer observability.\n* Support mTLS and protocols on TLS.\n* Support rich extension mechanism to provide highly customizable expansion capabilities.\n* Support process smooth upgrade.\n\n## Get Started\n\n```bash\npoetry add imesh\n```\n\nor\n\n```bash\npip install imesh\n```\n\n### RPC\n\nDeclared rpc interface Facade.\n\n```python\n\nfrom abc import ABC, abstractmethod\n\nfrom mesh import spi, mpi\n\n\n@spi(\"mesh\")\nclass Tokenizer(ABC):\n\n    @abstractmethod\n    @mpi(\"mesh.trust.apply\")\n    def apply(self, kind: str, duration: int) -> str:\n        \"\"\"\n        Apply a node token.\n        :param kind:\n        :param duration:\n        :return:\n        \"\"\"\n        pass\n\n    @abstractmethod\n    @mpi(\"mesh.trust.verify\")\n    def verify(self, token: str) -> bool:\n        \"\"\"\n        Verify some token verifiable.\n        :param token:\n        :return:\n        \"\"\"\n        pass\n```\n\nDeclared rpc service Implement.\n\n```python\n\nfrom mesh import mps, Tokenizer\n\n\n@mps\nclass MeshTokenizer(Tokenizer):\n\n    def apply(self, kind: str, duration: int) -> str:\n        return \"foo\"\n\n    def verify(self, token: str) -> bool:\n        return True\n```\n\nRemote reference procedure call.\n\n```python\n\nfrom mesh import mpi, Tokenizer\n\n\nclass Component:\n\n    @mpi\n    def tokenizer(self) -> Tokenizer:\n        pass\n\n    def invoke(self) -> bool:\n        token = self.tokenizer().apply('PERMIT', 1000 * 60 * 5)\n        return self.tokenizer().verify(token)\n\n\n```\n\n### Transport\n\nTransport is a full duplex communication stream implement.\n\n```python\nimport mesh\nfrom mesh import Mesh, log, ServiceLoader, Transport, Routable\nfrom mesh.prsim import Header\n\n\ndef main():\n    mesh.start()\n\n    transport = Routable.of(ServiceLoader.load(Transport).get(\"mesh\"))\n    session = transport.with_address(\"10.99.1.33:570\").local().open('session_id_008', {\n        Header.MESH_VERSION.key(): '',\n        Header.MESH_TECH_PROVIDER_CODE.key(): 'LX',\n        Header.MESH_TRACE_ID.key(): Mesh.context().get_trace_id(),\n        Header.MESH_TOKEN.key(): 'x',\n        Header.MESH_SESSION_ID.key(): 'session_id_008',\n        Header.MESH_TARGET_INST_ID.key(): 'JG0100000100000000',\n    })\n    for index in range(100):\n        inbound = f\"\u8282\u70b94\u53d1\u9001\u7ed9\u8282\u70b95\u62a5\u6587{index}\"\n        log.info(f\"\u8282\u70b94\u53d1\u9001:{inbound}\")\n        session.push(inbound.encode('utf-8'), {}, \"topic\")\n        outbound = session.pop(10000, \"topic\")\n        if outbound:\n            log.info(f\"\u8282\u70b94\u63a5\u6536:{outbound.decode('utf-8')}\")\n\n```\n",
    "bugtrack_url": null,
    "license": "LICENSE",
    "summary": "A lightweight, distributed, relational network architecture for MPC.",
    "version": "0.0.14",
    "project_urls": {
        "Documentation": "https://github.com/jiumi/meio",
        "Homepage": "https://github.com/jiumi/meio",
        "Repository": "https://github.com/jiumi/meio"
    },
    "split_keywords": [
        "servicemesh",
        " rpc",
        " codec",
        " cluster",
        " registry"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bcd1631f81890245a86e4f6c7a5496b723f6a00fa4fffa173deef1ea62f44ee1",
                "md5": "a7a9a3ab07e4ae2f4d2eeb452ecd905f",
                "sha256": "00d46a5382ada06abee432dc29bcfb111a6aee7f70c76d05c8293dee62136450"
            },
            "downloads": -1,
            "filename": "daas-0.0.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a7a9a3ab07e4ae2f4d2eeb452ecd905f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 41134238,
            "upload_time": "2025-08-03T12:35:41",
            "upload_time_iso_8601": "2025-08-03T12:35:41.755793Z",
            "url": "https://files.pythonhosted.org/packages/bc/d1/631f81890245a86e4f6c7a5496b723f6a00fa4fffa173deef1ea62f44ee1/daas-0.0.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "acc8945717d9cbc1b710cf28686745447e576f17e86d4af672cbe89e27dcb53b",
                "md5": "741f9f2b0042887cfab82c1098b5b287",
                "sha256": "b63dcf02dc9e28cfc4827b0a3aad2a04b7d4014de6dd669b68eda8c4ffa5da7b"
            },
            "downloads": -1,
            "filename": "daas-0.0.14.tar.gz",
            "has_sig": false,
            "md5_digest": "741f9f2b0042887cfab82c1098b5b287",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 40929238,
            "upload_time": "2025-08-03T12:36:01",
            "upload_time_iso_8601": "2025-08-03T12:36:01.574872Z",
            "url": "https://files.pythonhosted.org/packages/ac/c8/945717d9cbc1b710cf28686745447e576f17e86d4af672cbe89e27dcb53b/daas-0.0.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-03 12:36:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jiumi",
    "github_project": "meio",
    "github_not_found": true,
    "lcname": "daas"
}