Skip to main content

Microlib for socket RPC

Project description

socket_rpc

socket_rpc is a very simple microlib for remote procedure calls (RPC) over sockets in Python.

It exposes two class:

  • RPCServer - acts as a server for a Python RPC
  • RPCClient - allows you to call a function, registered on another host with the rpc decorator.

Install with:

pip install socket_rpc

It has no external dependencies and is less than 100 lines of code.

It doesn't fork the process and guarantees you that the calls to a server will be processed in the same order in which they were done.

Quick server example

To expose a function over TCP, just decorate it with the rpc decorator:

import logging
import sys

import numpy as np

from socket_rpc import RPCServer


logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

def callback0(np_arr: np.ndarray):
    print('0', np_arr.shape)
    

def callback1(np_arr: np.ndarray):
    print('1', np_arr.shape)

server = RPCServer(host='localhost', port=61000, buffer_size=1 * 1024 * 1024)
server.add_fn(callback0)
server.add_fn(callback1)
server.serve()

Quick call example

To call a function already exposed with the rpc decorator, just use the rpc_call function:

import numpy as np
from socket_rpc import RPCClient

client = RPCClient('127.0.0.1', 5555)
client.callback0(np.arange(100))
client.callback1(np.arange(10))

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

socket_rpc-0.4.6.tar.gz (3.5 kB view hashes)

Uploaded Source

Built Distribution

socket_rpc-0.4.6-py3-none-any.whl (4.1 kB view hashes)

Uploaded Python 3

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