Переменная содержит большой объем данных, сервис падает с ошибкой OOM

Ошибка systemctl

A process of this unit has been killed by the OOM killer.

Ошибка понятна, так же известно почему это происходит, вот в этом месте

@api_view(["GET"])
def dynRequest2(request):
    uri = request.build_absolute_uri().split("/apiv1/")[1]
    key, access_token = check_request(request=request) # самонаписанная функция, возвращает необходимые ключ и токен доступа
    if key:
        header = {
            'Authorization':'Bearer ' + access_token,
            'Content-Type':'application/json; charset=utf-8'
        }
        response = get(URL+uri, headers=header)
        return Response(response.json())
    return Response({"result":"something went wrong"})

То есть я запрашиваю данные и в том же виде передаю дальше. Переменная response может содержать большое количество данных и я понимаю, что данные остаются в памяти.

Как избежать этого?

UPD Попробовал использовать StreamingHttpResponse

@api_view(["GET"])
def dynRequest2(request):
    uri = request.build_absolute_uri().split("/apiv1/")[1]
    key, access_token = check_request(request=request)
    if key:
        header = {
            'Authorization': 'Bearer ' + access_token,
            'Content-Type': 'application/json; charset=utf-8'
        }

        try:
            with get(URL + uri, headers=header, stream=True) as response:
                response.raise_for_status()
                return StreamingHttpResponse(
                    response.iter_content(chunk_size=8192),
                    content_type=response.headers.get('Content-Type', 'application/json')
                )
        except Exception as e:
            return Response({"result": "error", "details": str(e)}, status=500)

    return Response({"result": "something went wrong"}, status=400)

ответ

{"result": "error", "details": "Мы достигли конца буфера."}

Ошибку перевел на русский, поскольку используется норвежский язык

в оригинальном виде ошибка выглядит так

Vi nådde slutten på bufferen.

Вернуться на верх