SocketIO framework driven by the AsyncAPI specification. Built on top of Flask-SocketIO. Inspired by Connexion.
Project description
Asynction
SocketIO python framework driven by the AsyncAPI specification. Built on top of Flask-SocketIO. Inspired by Connexion.
The purpose of asynction
is to empower a specification first approach when developing SocketIO APIs in Python.
Disclaimer: Asynction is still at a very early stage and should not be used in production codebases.
Prerequisites
- Python 3.7 (or higher)
Install
$ pip install asynction
Usage
Example event handler callable sitting under ./my_api/handlers.py
:
def user_signedup():
logger.info("Registered user")
Example specification sitting under ./docs/asyncapi.yaml
:
asyncapi: 2.0.0
info:
title: Account Service
version: 1.0.0
description: This service is in charge of processing user signups
channels:
user/signedup:
subscribe:
operationId: my_api.handlers.user_signedup
message:
$ref: '#/components/messages/UserSignedUp'
components:
messages:
UserSignedUp:
payload:
type: object
Bootstrap the AsynctionSocketIO server:
from asynction import AsynctionSocketIO
from flask import Flask
flask_app = Flask(__name__)
asio = AsynctionSocketIO.from_spec(
spec_path="./docs/asyncapi",
app=flask_app,
message_queue="redis://",
# any other kwarg that the flask_socketio.SocketIO constructor accepts
)
The AsynctionSocketIO
class extends the SocketIO
class of the Flask-SocketIO library.
The above asio
server object is ready be run without the need to register the event handlers.
TODOs
on_error
handlers- Increase JSON Schema reference resolution test coverage
- Payload validation
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 asynction-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4667dca7dbda8a4a8c299b7da1a6dd48a107c10262b7521bc26109efe36b0c97 |
|
MD5 | 65d0c7019e11ff0f7821573cb4934b54 |
|
BLAKE2b-256 | cf052c1a56640cc0f82e95d376434c79ba76971862e614c9b58d0b1a49b79113 |