Skip to main content

Callosum RPC Library

Project description

Callosum

An RPC Transport Library

It provides an asynchronous multi-channel order-preserving message and data streaming transport for upper RPC layers (e.g., Apache Thrift) by wrapping lower transport implementations (e.g., ZeroMQ).

It aims to follow the latest coding style and conventions in Python asyncio.

Corpus callosum is a bundle of neuron fibers that connects two cerebral hemispheres of a human brain.

Prerequisite

Python 3.8 or higher.

Features

  • RPC
    • Native timeout and cancellation support
    • Explicit server-to-client error propagation including stringified tracebacks
    • Order preserving based on user-defined keys while keeping executions asynchronous
    • Concurrency limits based on aiojobs
  • Streaming
    • Broadcast & shared pipelines
  • Optional client authentication and encrypted communication
    • Currently supported for only ZeroMQ with its CURVE library
  • Optional message compression using snappy
  • Replacible and combinable lower/upper layers (ZeroMQ/Redis + JSON/msgpack/Thrift)

Planned features

  • Managed streaming (with acks)
  • Tunneling to bundle other channels and generic network traffic in a single connection
  • Bidirectional RPC
  • Chunked transfer of large messages

Installation

To install the core:

$ pip install -U pip setuptools
$ pip install callosum

You may add extra dependencies like:

$ pip install 'callosum[zeromq,redis,thrift,snappy]'

Examples

Please check out the examples directory.

Development

Use the editable installation of Python setuptools.

$ pip install -U pip setuptools
$ pip install -U -e '.[dev,build,test,zeromq,redis,thrift,snappy]'

Changes

v0.9.1 (2020-01-05)

  • FIX: wrong typing of RPCMessage.body field

  • IMPROVE: Add debug_rpc option to rpc.Peer for logging exceptions in RPC scheduler and user-defined handlers explicitly.

  • Update dependencies and remove unused ones.

v0.9.0 (2019-12-06)

  • First public release with a working RPC based on ZeroMQ DEALER/ROUTER sockets.

2018-05-02

  • Started the project.

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

callosum-0.9.1.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

callosum-0.9.1-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file callosum-0.9.1.tar.gz.

File metadata

  • Download URL: callosum-0.9.1.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for callosum-0.9.1.tar.gz
Algorithm Hash digest
SHA256 0d7bbf25bb321d29ee1347a42f4922b902164c9106e69f96e98821926de5311c
MD5 df5d713982a772779a1f263919769eee
BLAKE2b-256 73a7afd480b7e94461c02947e69b5fbc3c266ed46e88dd9cda5f26c69603e577

See more details on using hashes here.

Provenance

File details

Details for the file callosum-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: callosum-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for callosum-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f7eb74bc6241c4e220ae0a57aabd6effafdc363058c82e2454290948a6004252
MD5 d48ed50856d837e32a7c5f51f813f4af
BLAKE2b-256 19ea13c5900b58a5308297fae2dbec10bbaca079adcd27857becf89bab82364f

See more details on using hashes here.

Provenance

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