Skip to main content

socpi

A simple async socket framework for python supporting tcp and unix sockets. Allows you to go beyond json by using pickle

How to use it

from socpi import App, Client


# create the app with the socket path for unix sockets
app = App('/run/socpi')

# or use [ip, port] tuple for tcp
# app = App(('0.0.0.0', 4238))

# Specify your endpoints
@app.register
def echo(msg: str) -> str:
    return msg.lower()

# then launch your server, change `SERVER` to false to launch a client
SERVER = True
if SERVER:
    asyncio.run(app.run())

# or launch a client:
async def main():
    # no openapi required, everything is generated from the `app`
    client = Client(app)
    print(await client.echo('fooo'))

if not SERVER:
    asyncio.run(main())

There is a demo of a chat application in the examples directory.

What can it do:

Generators:

You can write and call generators and async generators:

@app.register
def foo():
    print('hello from the other side')
    yield 'foo'

And call them like you would expect:

async for i in client.foo():
    print(i)

Every generator will be turned into an async one!

Exceptions:

Exception handling is completely transparent, just raise and except them as usual.

@app.register
def failer():
    raise Exception('foo')

Handle them as usual, the objects will not be changed (but missing server and broken connections will add some extra ones):

try:
    await client.failer()
except Exception as e:
    print(e) # foo

Serialization:

Anything pickleable will work, as such remote code execution is not a bug, it is a feature. Deploying socpi to the wider internet is not recommended.

A json only version might be a more secure, less capable option.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

socpi-0.2.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

socpi-0.2.1-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file socpi-0.2.1.tar.gz.

File metadata

  • Download URL: socpi-0.2.1.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.18.12-264-tkg-pds

File hashes

Hashes for socpi-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ebded5780220439d3ea09e8f6caf17ae1b6803692afb78342c813faf8388e1e2
MD5 f01743aa385d3c3c60df9cdddf70094b
BLAKE2b-256 180b2f6518abac81f35430b7bf99e73f695f0316f83421fbee51562f25200b2f

See more details on using hashes here.

File details

Details for the file socpi-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: socpi-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.18.12-264-tkg-pds

File hashes

Hashes for socpi-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ce90b7286dca3ea41771a88ac39925f2fa8105e96d3b77716625b456acf116a2
MD5 ea3c72a146714dfd75eef4ae2f585ec2
BLAKE2b-256 b67efa39e373e6ec2938138c1eba40f506b74c83a6a4829b24b673544a5606cd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page