json-stream-generator

json-stream-generator - serialize json to stream of strings in generator


License
MIT
Install
pip install json-stream-generator==0.2.0

Documentation

json-stream-generator - serialize json in generator

tests pypi

json-stream-generator allows you to serialize object to JSON string and start the output immediately, without waiting for serialization to complete.

It was designed to be used with Django's StreamingHttpResponse or similar concept in other web frameworks to allow sending huge json blobs to the client without triggering load balancer's timeout:

from json_stream_generator import json_generator
from django.http import StreamingHttpResponse

def my_view(request):
    # NOTE: No Content-Length header!
    return StreamingHttpResponse(
        json_generator((num for num in range(100_000_000))),
        content_type="application/json",
        headers={"Content-Disposition": 'attachment; filename="somefilename.json"'},
      )

json-stream-generator comes with built-in support for Django Rest Framework:

from json_stream_generator.rest_framework.mixins import StreamingListModelMixin
from rest_framework import viewsets


class DemoViewSet(StreamingListModelMixin, viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MySerializer