Skip to main content

pseud

Travis-CI Status Coverage Status Documentation Status

Pythonic bidirectional-rpc API built on top of ØMQ with pluggable encryption, authentication and heartbeating support.

Features

  1. ØMQ transport layer.

  2. All native python types supported (msgpack).

  3. First citizen exceptions.

  4. Bi-bidirectional (server can initiate calls to connected clients).

  5. Encryption based on CURVE.

  6. Pluggable Authentication.

  7. Pluggable Heartbeating.

  8. Pluggable Remote Call Routing.

  9. Built-in proxy support. A server can delegate the work to another one.

  10. SyncClient (using zmq.REQ) to use within non event based processes. (Heartbeating, Authentication and job execution are not supported with the SyncClient.)

Installation

$ pip install pseud

Execution

The Server

from pseud import Server


server = Server('service')
server.bind('tcp://127.0.0.1:5555')

@server.register_rpc
def hello(name):
    return 'Hello {0}'.format(name)

await server.start()  # this will block forever

The Client

from pseud import Client


client = Client('service', io_loop=loop)
client.connect('tcp://127.0.0.1:5555')

# Assume we are inside a coroutine
async with client:
    response = await client.hello('Charly')
    assert response == 'Hello Charly'

The SyncClient

# to use within a non-asynchronous process or in a command interpreter
from pseud import SyncClient


client = SyncClient()
client.connect('tcp://127.0.0.1:5555')

assert client.hello('Charly') == 'Hello Charly'

The Server send a command to the client

It is important to note that the server needs to know which peers are connected to it. This is why the security_plugin trusted_peer comes handy. It will register all peer id and be able to route messages to each of them.

from pseud import Server


server = Server('service', security_plugin='trusted_peer')
server.bind('tcp://127.0.0.1:5555')

@server.register_rpc
def hello(name):
    return 'Hello {0}'.format(name)

await server.start()  # this will block forever

The client needs to send its identity to the server. This is why plain security plugin is used. The server will not check the password, he will just take into consideration the user_id to perform the routing.

from pseud import Client


client = Client('service',
                security_plugin='plain',
                user_id='alice',
                password='')
client.connect('tcp://127.0.0.1:5555')

# Action that the client will perform when
# requested by the server.
@client.register_rpc(name='draw.me.a.sheep')
def sheep():
    return 'beeeh'

Back on server side, we can send to it any commands the client is able to do.

# assume we are inside a coroutine
sheep = await server.send_to('alice').draw.me.a.sheep()
assert sheep == 'beeeh'

Documentation

Pseud on Readthedocs

Copyright 2014 ezeep GmbH

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for pseud 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pseud 1.0.1
File Size Uploaded
pseud-1.0.1.tar.gz 12.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pseud 1.0.1
File Interpreter ABI Platform
pseud-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 28.7 kB

Release files / pseud-1.0.1.tar.gz

Download URL pseud-1.0.1.tar.gz
Size 12.7 kB
Tags Source
SHA-256 checksum
How to use checksums
417c88e3f51797d8eef186f433c4ea31cdf21cc8da1a0f3ca52577a1d521b54a
BLAKE2b-256 checksum
How to use checksums
2e34e58cf0dad0ee253a70808d9c68b25a4730a1f2e5f58a8cec1c0e76ef6dad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / pseud-1.0.1-py3-none-any.whl

Download URL pseud-1.0.1-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd24f8be43ab13d628b108ac6c141bdf6031bdcfa09bd7c2ba35f80cd03c5e67
BLAKE2b-256 checksum
How to use checksums
86b4cf1c5d9bb40920343967b8948f9952e9c765e78cb5166db8ea61ff217c5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

0.0.5

2 release files

0.0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page