Skip to main content

A lightweight, distributed, relational network architecture for MPC.

Project description

Mesh Python Client

Build Status Financial Contributors on Open Collective codecov license

中文版 README

Introduction

Mesh is a standard implementation for Private Transmission Protocol specification.

Mesh Python develop kits base on Python3.6. Recommend use 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

poetry add imesh

or

pip install imesh

RPC

Declared rpc interface Facade.

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.

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.

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.

import mesh
from mesh import Mesh, log, ServiceLoader, Transport, Routable
from mesh.prsim import Metadata


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', {
        Metadata.MESH_VERSION.key(): '',
        Metadata.MESH_TECH_PROVIDER_CODE.key(): 'LX',
        Metadata.MESH_TRACE_ID.key(): Mesh.context().get_trace_id(),
        Metadata.MESH_TOKEN.key(): 'x',
        Metadata.MESH_SESSION_ID.key(): 'session_id_008',
        Metadata.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')}")

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

imesh-0.0.24.7.tar.gz (44.3 MB view details)

Uploaded Source

Built Distribution

imesh-0.0.24.7-py3-none-any.whl (44.5 MB view details)

Uploaded Python 3

File details

Details for the file imesh-0.0.24.7.tar.gz.

File metadata

  • Download URL: imesh-0.0.24.7.tar.gz
  • Upload date:
  • Size: 44.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.11.9 Darwin/22.6.0

File hashes

Hashes for imesh-0.0.24.7.tar.gz
Algorithm Hash digest
SHA256 fa1ad7851466d841a05ae5e2860f1bc6bdc8cd4c164b6ffb513662b349de6856
MD5 30e44757e7b31f20440f7a654bacd635
BLAKE2b-256 053d3d99e6a2abe6162c230f42b596b4aacffd52cf62270a95a7bcbde2cfd7b9

See more details on using hashes here.

File details

Details for the file imesh-0.0.24.7-py3-none-any.whl.

File metadata

  • Download URL: imesh-0.0.24.7-py3-none-any.whl
  • Upload date:
  • Size: 44.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.11.9 Darwin/22.6.0

File hashes

Hashes for imesh-0.0.24.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3fd4d09577d96d8d8e450ccc63be7f2777842d3969554e9e33c220321870b033
MD5 5f0bca4ce470c86ce4819a48e8275626
BLAKE2b-256 bd97266e0bf8a195b93e670504b240d713102db75dd8e28f658dd152b1f1f595

See more details on using hashes here.

Supported by

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