Django Async Server Sent Events Helpers
Helpers to make Server Sent Events in Django easier and async.
SSE Reference
See: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
Install
pip install django-async-sse
Setup
Write an Event Stream
SseStreamView is a class-based view. Add an async stream method that uses yield to send events. Otherwise known as an async iterator.
Example SSE View:
import asyncio
from django_asse import SseStreamView, JsonEvent
class WeatherStream(SseStreamView):
async def stream(self, request, lat, lng):
last_update = None
while 1:
wp = await WeatherPoint.objects.filter(point=f"{lat},{lng}").afirst()
if wp and wp.created != last_update:
event = JsonEvent(event='weather', data=wp.weather_data['current'])
last_update = wp.created
# yield an event to send it
yield event
# always send a ping to keep connection from timing out
# Note: needed for some deployments like Heroku
yield JsonEvent(event='ping', data=None)
await asyncio.sleep(30)
Connect View to a URL
urlpatterns = [
...
re_path(r"weather/(-?\d{1,3}.\d{2}),(-?\d{1,3}.\d{2})/", WeatherStream.as_view()),
]
Run an ASGI server
pip install uvicorn[standard]
uvicorn myproject.asgi:application --loop uvloop
Included Helpers
Event: Event where data are strings.JsonEvent: Event where data is encoded as JSON.SseStreamView: Class-based view to generate an async streaming response. Inherit from this class and add an asyncstreammethod that is an async iterator.
Metadata
Release files for django-async-sse 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_async_sse-1.0.0.tar.gz | 3.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_async_sse-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.5 kB
Release files / django_async_sse-1.0.0.tar.gz
| Download URL | django_async_sse-1.0.0.tar.gz |
|---|---|
| Size | 3.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5fcc786ea76c6fbb34e3a88a8757c43e2cff528778e855c2d3085588994d7a01
|
|
BLAKE2b-256 checksum How to use checksums |
c1abf0c5a6b26bc4aec676a7599619d44cf50c518b3439d04c0f8e0cb3250896
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.10.4 CPython/3.10.12
|
Release files / django_async_sse-1.0.0-py3-none-any.whl
| Download URL | django_async_sse-1.0.0-py3-none-any.whl |
|---|---|
| Size | 3.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7ccabba818a2495c547f3541f7b161b74a6e24126af2896030e7f779db30db29
|
|
BLAKE2b-256 checksum How to use checksums |
449e4294916eedfa373cad2eb32f91c26d733d92eea15d201d8de32a89a22645
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.10.4 CPython/3.10.12
|