Streaming
Lanarky uses Server-sent events to implement streaming support over HTTP.
StreamingResponse
¶
The StreamingResponse
class follows the EventSource
protocol to send events to the client.
Example¶
To understand how to use StreamingResponse
, let's look at an example.
from lanarky import Lanarky
from lanarky.responses import StreamingResponse
app = Lanarky()
@app.get("/")
def index():
def stream():
for word in ["Hello", "World!"]:
yield word
return StreamingResponse(content=stream())
Here, we have a simple endpoint streams the message "Hello World!" to the client.
StreamingResponse
takes a generator function as its content, iterates over it and
sends each item as an event to the client.
To receive the events, let's build a simple client script.
from lanarky.clients import StreamingClient
def main():
client = StreamingClient()
for event in client.stream_response("GET", "/"):
print(f"{event.event}: {event.data}")
if __name__ == "__main__":
main()
First run the application server.
uvicorn app:app
Then run the client script.
python client.pymessage: Hello
message: World!
message: World!
Warning
The StreamingResponse
classes inside the Adapters API behave differently from the
above example. To learn more, see Adapters API documentation.