Networking made simply using nng
Project description
This is pynng.
Ergonomic bindings for nanomsg next generation (nng), in Python. pynng provides a nice interface on top of the full power of nng. nng, and therefore pynng, make it easy to communicate between processes on a single computer or computers across a network.
Goals
Provide a Pythonic, works-out-of-the box library on Windows and Unix-y platforms. Like nng itself, the license is MIT, so it can be used without restriction.
Installation
On Windows and 64-bit Linux, the usual
pip install pynng
should suffice. Building from source is a little convoluted, due to some issues with the way the setup.py script is written. Nevertheless, it can be done:
git clone https://github.com/codypiersall/pynng
cd pynng
pip install .
python setup.py build
python setup.py build_ext --inplace
pytest
Installing on Mac
This project does not yet know how to build for Mac, because I don't have a Mac to test on. The tricky bit is letting cffi know the correct object file to link to, and ensuring whatever the Mac equivalent of -fPIC is set when compiling.
Using pynng
Using pynng is easy peasy:
from pynng import Pair0
s1 = Pair0()
s1.listen('tcp://127.0.0.1:54321')
s2 = Pair0()
s2.dial('tcp://127.0.0.1:54321')
s1.send(b'Well hello there')
print(s2.recv())
s1.close()
s2.close()
Since pynng sockets support setting most parameters in the socket's __init__
method and is a context manager, the above code can be written much shorter:
from pynng import Pair0
with Pair0(listen='tcp://127.0.0.1:54321') as s1, \
Pair0(dial='tcp://127.0.0.1:54321') as s2:
s1.send(b'Well hello there')
print(s2.recv())
Many other protocols are available as well:
Pair0
: one-to-one, bidirectional communication.Pair1
: one-to-one, bidirectional communication, but also supporting polyamorous socketsPub0
,Sub0
: publish/subscribe sockets.Surveyor0
,Respondent0
: Broadcast a survey to respondents, e.g. to find out what services are available.Req0
,Rep0
: request/response pattern.Push0
,Pull0
: Aggregate messages from multiple sources and load balance among many destinations.
TODO
- Support Mac
- More docs
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
Built Distributions
Hashes for pynng-0.1.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36d42ce7b343bd3731d3dd402779729bf406bf7051bddad91c366f0d7863446f |
|
MD5 | 7829789c24952c2df4c89beec8ed480b |
|
BLAKE2b-256 | ece0b279a5f958d2e098239c44b1366dc509deb6043fd7795c65c072a610ed93 |
Hashes for pynng-0.1.2-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a781351c47f09858d012d1c2adecf2491428774acd97510f2fad5d7198e5a065 |
|
MD5 | 72b0d501547753a73840dca78297d146 |
|
BLAKE2b-256 | 640662ec786bd3db9631c71df63c38b3fb4059cae929b0a7c59787a4a8958413 |
Hashes for pynng-0.1.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5a4c33082c084bac0dca9bf79d17e17e8b03608211de2cd704de23e82f604ee |
|
MD5 | ba54fecf67ea77b92838d35077ff3d1a |
|
BLAKE2b-256 | 3f8884c1f7658a4982a1f4431d28375b6ac6c3ac4929be3c1910e60af29af58c |
Hashes for pynng-0.1.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78ffbea14f49a337a83e87be75010d034c980a71f5d1d716ba42459f1b859467 |
|
MD5 | 1d1f37bf10893ca4d217ccf97da87129 |
|
BLAKE2b-256 | d3124d17e25cb89d72f33cb15977196199bea2c2a28b1a752369df132a327f53 |
Hashes for pynng-0.1.2-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5c0627842b6295579da1320f874534aa53dd78630a3a3b90bd8b24f9690f808 |
|
MD5 | e3f525d4849e4edd6af25220fe446a58 |
|
BLAKE2b-256 | 1d253f4f1cc5499376f2c96d712219d0eb6d4121d491408baf28aae462686298 |
Hashes for pynng-0.1.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcd00acb2abaa15796228e677ec4b941d61b93e6314814bd3ce96b65ff343eba |
|
MD5 | ff4a26d3519c9394be50e506e47b5fc9 |
|
BLAKE2b-256 | 11c8fe289754fe04cea73aa61eab33fd22087eb1604cce040594a51e3279c566 |
Hashes for pynng-0.1.2-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99f719a6c285ee310a515687c867741a619f81017f0c5c8257c9c27262c4d430 |
|
MD5 | e3d900fd6ee6ec6ff6a28046a3ad15c0 |
|
BLAKE2b-256 | 7063105ef48302666bd9ab9b6e14f6961b2f08c582c9450325fd2460e7845955 |
Hashes for pynng-0.1.2-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5eecbc29445f0c924f75bd83a8b363b08bae354ef605ce67fa3427badfb593df |
|
MD5 | a5b5b525d98d2bd2c93a27071b1c9c46 |
|
BLAKE2b-256 | ebbe6fa505dcadd1f09c9dc1962d72505e03fdc4d3fe25756c8033e7f87322be |
Hashes for pynng-0.1.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46d126a4d3a4a9bb8b0eb69494e8cebd7ed488d7b5e3cc7494c9a2ade324e515 |
|
MD5 | 25e4ee60d52b14d9315853f8b420bb94 |
|
BLAKE2b-256 | f42547bac418abf8fe2e922f30b50ceea4ce6a76e0125133edc37a5981fdc8c5 |