Skip to content

codemation/easyrpc

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

An easy to use rpc framework for enabling fast inter-process, inter-container, or inter-host communication

Easily share functions between hosts, processes, containers without the complexity of defining non-native python types or proxy modules.

Documentation Status PyPI version

Documentation

easyrpc.readthedocs.io

Key Features

  • No predefined proxy functions at the remote endpoints
  • Easily group and share functons among hosts / processes using Namespaces / Namespace Groups
  • Proxy functions parameters are validated as if defined locally.
  • Optional: pre-flight encyrption
  • No strict RPC message structure / size limit
  • Flexible parameter types within pickable constraint

Quick Start

$ virtualenv -p python3.7 easy-rpc-env

$ source easy-rpc-env/bin/activate

(easy-rpc-env)$ pip install easyrpc

Basic Usage:

# server.py
from fastapi import FastAPI
from easyrpc.server import EasyRpcServer

server = FastAPI()

ws_server_a = EasyRpcServer(server, '/ws/server_a', server_secret='abcd1234')

@ws_server_a.origin(namespace='public')
def good_func_a(a, b, c):
    print(f"good_func_a {a} {b} {c}")
    return {"good_func_a": [a, b, c]}
# client.py
import asyncio
from easyrpc.proxy import EasyRpcProxy

async def main():
    proxy = await EasyRpcProxy.create(
        '0.0.0.0', 
        8090, 
        '/ws/server_a', 
        server_secret='abcd1234',
        'namespace='public'
    )

    good_func_a = proxy['good_func_a']
    result = await good_func_a(1, 5, 7)
    print(result)

asyncio.run(main())

Recipes

See other usage examples in Recipes

Supported Functions Features

  • async def & def
  • async generators & generators
  • *args, **kwargs
  • positional & default parmeters
  • TODO - type annotations

Common Use Cases

  • State sharing among forked workers
  • Shared Database connections / cache
  • Shared Queues
  • Worker Pooling - Easy centralization for workers and distribution of work.
  • Function Chaining

About

An easy to use rpc framework for enabling fast inter-process, inter-container, or inter-host communication

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages