---
title: "sysid/sse-starlette"
description: "!https://github.com/sysid/sse-starlette"
date: 2023-10-12
published: true
tags:
  - dev
  - htmx
  - thought
  - webdev
template: link
---


<div class="embed-card embed-card-external">
  <a href="https://github.com/sysid/sse-starlette" class="embed-card-link" target="_blank" rel="noopener noreferrer">
    <div class="embed-card-image">
      <img src="https://opengraph.githubassets.com/d03db450630784f255d25f4aa35c55994bab9131ab1c9c5bae55ac36bc532706/sysid/sse-starlette" alt="GitHub - sysid/sse-starlette — Contribute to sysid/sse-starlette development by creating an account on GitHub." loading="lazy">
    </div>
    <div class="embed-card-content">
      <div class="embed-card-title">GitHub - sysid/sse-starlette</div>
      <div class="embed-card-description">Contribute to sysid/sse-starlette development by creating an account on GitHub.</div>
      <div class="embed-card-meta">GitHub &middot; github.com</div>
    </div>
  </a>
</div>


sse-starlette provides server sent events for startlette and FastApi.  I'm evaluating for use with htmx.

## Installation:

``` bash
pip install sse-starlette
```
## Usage:

``` python
import asyncio
import uvicorn
from starlette.applications import Starlette
from starlette.routing import Route
from sse_starlette.sse import EventSourceResponse

async def numbers(minimum, maximum):
    for i in range(minimum, maximum + 1):
        await asyncio.sleep(0.9)
        yield dict(data=i)

async def sse(request):
    generator = numbers(1, 5)
    return EventSourceResponse(generator)

routes = [
    Route("/", endpoint=sse)
]

app = Starlette(debug=True, routes=routes)

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000, log_level='info')
```
