# Fix FastAPI StreamingResponse Not Streaming Data

> Set the Content-Type header to text/event-stream in FastAPI StreamingResponse to prevent browser buffering and enable real-time data streaming from generators

**URL:** https://sentry.io/answers/fastapi-streamingresponse-not-streaming-with-generator-function/

---

## The Problem

For one of the endpoints in my FastAPI, I need to return a large amount of data. I want to use FastAPI's `StreamingResponse` so that my API's client applications can start processing the data as it arrives. I've built a simplified prototype to test out the idea:

```python
from fastapi import FastAPI
from fastapi.responses import StreamingResponse

app = FastAPI()

def data_generator(): # simulate data streaming
    for number in range(100):
        yield f"{number}\n"

@app.get("/stream")
def stream_data():
    return StreamingResponse(data_generator())
```

But, when I query the `/stream` endpoint in my browser, I receive the entirety of the data in one response instead of as a stream. Why isn't this working as I expected and how can I fix it?

## The Solution

This issue is likely caused by the way browsers buffer responses – the client may be buffering the entire stream before displaying it as a single response. To force browsers and other HTTP clients to treat our response as a stream, we need to set its `Content-Type` to `text/event-stream`.

It's possible that the `data_generator` function finishes too quickly for the data to be streamed in more than a single chunk. We should add a time delay to the function to better simulate a real data stream.

Here is an updated version of the code with these two changes applied:

```python
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import time

app = FastAPI()

def data_generator():
    for number in range(100): # simulate data streaming
        yield f"data: {number}\n\n"
        time.sleep(1)  # 1 second delay to simulate streaming

@app.get("/stream")
def stream_data():
    return StreamingResponse(data_generator(),
                              headers={ "Content-Type": "text/event-stream" }) # appropriate Content-Type header added to response
```

When moving beyond this simple prototype and manual testing in the browser, it is important to ensure that the HTTP client consuming this request supports HTTP streaming.

---

*Source: [sentry.io/answers/fastapi-streamingresponse-not-streaming-with-generator-function/](https://sentry.io/answers/fastapi-streamingresponse-not-streaming-with-generator-function/)*
