Concurrency agnostic socket API
Project description
sockio
A concurrency agnostic socket library on python.
So far implemented REQ-REP semantics with auto-reconnection facilites.
Implementations for:
- classic blocking API
- future based API
- asyncio
Join the party by bringing your own concurrency library with a PR!
I am looking in particular for implementations over trio and curio.
Missing features
- Timeouts
- Connection retries
- trio event loop
- curio event loop
- Stream semantics
Installation
From within your favourite python environment:
pip install sockio
Usage
asyncio
import asyncio
from sockio.aio import Socket
async def main():
sock = Socket('acme.example.com', 5000)
# Assuming a SCPI complient on the other end we can ask for:
reply = await sock.write_readline(b'*IDN?\n')
print(reply)
asyncio.run(main())
classic
from sockio.sio import Socket
sock = Socket('acme.example.com', 5000)
reply = sock.write_readline(b'*IDN?\n')
print(reply)
concurrent.futures
from sockio.sio import Socket
sock = Socket('acme.example.com', 5000, resolve_futures=False)
reply = sock.write_readline(b'*IDN?\n').result()
print(reply)
Features
Auto-reconnection
sock = Socket('acme.example.com', 5000)
reply = await sock.write_readline(b'*IDN?\n')
print(reply)
# ... kill the server connection somehow and bring it back to life again
# You can use the same socket object. It will reconnect automatically
# and work "transparently"
reply = await sock.write_readline(b'*IDN?\n')
print(reply)
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
sockio-0.1.9.tar.gz
(4.7 kB
view hashes)