Sanic Server-Sent Events extension
A Sanic extension for HTML5 server-sent events support, inspired by flask-sse and aiohttp-sse.
Install
Installation process as simple as:
$ pip install sanic_sse
Example
Server example:
from http import HTTPStatus
from sanic import Sanic
from sanic.response import json, json_dumps
from sanic.exceptions import abort
from sanic_sse import Sse
# This function is optional callback before sse request
# You can use it for authorization purpose or something else
async def before_sse_request(request):
if request.headers.get("Auth", "") != "some_token":
abort(HTTPStatus.UNAUTHORIZED, "Bad auth token")
sanic_app = Sanic()
# The default sse url is /sse but you can set it via init argument url.
Sse(
sanic_app, url="/events", before_request_func=before_sse_request
) # or you can use init_app method
@sanic_app.route("/send", methods=["POST"])
async def send_event(request):
# if channel_id is None than event will be send to all subscribers
channel_id = request.json.get("channel_id")
# optional arguments: event_id - str, event - str, retry - int
# data should always be str
try:
await request.app.sse_send(json_dumps(request.json), channel_id=channel_id)
except KeyError:
abort(HTTPStatus.NOT_FOUND, "channel not found")
return json({"status": "ok"})
if __name__ == "__main__":
sanic_app.run(host="0.0.0.0", port=8000)
Client example (powered by sseclient-py and requests):
import json
import pprint
import requests
import sseclient
url = "http://127.0.0.1:8000/events"
# you may set channel_id parameter to receive special events
# url = "http://127.0.0.1:8000/events?channel_id=foo"
response = requests.get(url, stream=True)
client = sseclient.SSEClient(response)
for event in client.events():
print(event.id)
print(event.event)
print(event.retry)
pprint.pprint(json.loads(event.data))
Requirements
Metadata
Release files for sanic-sse 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sanic_sse-0.3.1.tar.gz | 5.9 kB | Without provenance | Details for sanic_sse-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sanic_sse-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for sanic_sse-0.3.1-py3-none-any.whl |
Total release size: 12.3 kB
Release files / sanic_sse-0.3.1.tar.gz
| Download URL | sanic_sse-0.3.1.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fa74e12b400abdb17570dcaffbdfae1d2e572560705e2896179f2d243e429e51
|
|
BLAKE2b-256 checksum How to use checksums |
9e05592f92973b1f1c82d4ba42c18954d200f4f705b65bf3e76dfc2a4a4efa23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.4 CPython/3.9.0 Linux/5.4.0-1031-azure
|
Release files / sanic_sse-0.3.1-py3-none-any.whl
| Download URL | sanic_sse-0.3.1-py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aa219853759334fa753eab73724c4973916b6d4279a80770367055929edb88c6
|
|
BLAKE2b-256 checksum How to use checksums |
f993ca9584948538ff4125124052e92be3bb07194b2d2af9c3d09168a1a7dd72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.4 CPython/3.9.0 Linux/5.4.0-1031-azure
|
Security for sanic-sse 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.