A simple socket api framework
Project description
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 pickle
able 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.
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 Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebded5780220439d3ea09e8f6caf17ae1b6803692afb78342c813faf8388e1e2 |
|
MD5 | f01743aa385d3c3c60df9cdddf70094b |
|
BLAKE2b-256 | 180b2f6518abac81f35430b7bf99e73f695f0316f83421fbee51562f25200b2f |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce90b7286dca3ea41771a88ac39925f2fa8105e96d3b77716625b456acf116a2 |
|
MD5 | ea3c72a146714dfd75eef4ae2f585ec2 |
|
BLAKE2b-256 | b67efa39e373e6ec2938138c1eba40f506b74c83a6a4829b24b673544a5606cd |