Skip to main content

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 async stream method 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)

Source distribution for django-async-sse 1.0.0
File Size Uploaded
django_async_sse-1.0.0.tar.gz 3.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-async-sse 1.0.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page