Minimal OpenAPI asynchronous server application
Project description
aio-openapi
Asynchronous web middleware for Rest APIs with PostgreSql Database.
Installation
pip install aio-openapi
Development
Clone the repository and create a virtual environment venv
.
Install dependencies by running the install script
./dev/install.sh
To run tests
pytest --cov
Features
- Asynchronous web routes with aiohttp
- Data validation, serialization and unserialization with python dataclasses
- OpenApi v 3 auto documentation
- SqlAlchemy expression language
- Asynchronous DB interaction with asyncpg
- Migrations with alembic
- SqlAlchemy tables as python dataclasses
Websockets
This library provides a simple distributed websocket utility for creating websocket remote procedure calls (RPC) and pub/sub.
from aiohttp import web
from openapi.ws import Sockets
app = web.Application()
...
app['web_sockets'] = Sockets(app)
RPC protocol
The RPC protocol has the following structure for incoming messages
{
"id": "abc",
"method": "rpc_method_name",
"payload": {
...
}
}
The id
is used by clients to link the request with the corresponding response.
The response for an RPC call is eitrher a success
{
"id": "abc",
"method": "rpc_method_name",
"result": {
...
}
}
or error
{
"id": "abc",
"method": "rpc_method_name":
"error": {
...
}
}
Publish/Subscribe
To subscribe to messages, one need to use the Subscribe
mixin with the subscribe RPC handler.
Messages take the form:
{
"channel": "channel_name",
"event": "event_name",
"data": {
...
}
}
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
Hashes for aio_openapi-1.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9232cf5b404606bed5f666b1b3156d656de5bc0264ccd84574db6f9193928962 |
|
MD5 | 157d4e1cc92f216e0d296b5297e083d0 |
|
BLAKE2b-256 | ea4f9a335546c8211fb9f8b085a87af8552dd74cf0427b2e177003d36b4448ee |