Как обрабатывать 50k или более массив объектов в Django Rest Framework?

Я столкнулся с проблемой. Наше требование заключается в том, что мы не можем использовать пагинацию, поэтому нам нужны все записи за один раз в Response.

моя функция выглядит так:

from rest_framework.response import Response

class TestingViewsAPI(APIView):
    
    def get(self, request):
       data_list = [{}....................] #50k list of dict

       return Response({
                "Data": {
                       "data": data_list,
                }
        })
        

Когда это происходит, моя система зависает, как я могу справиться с этим? Мне нужны рекомендации экспертов Я не использую пагинацию

Вы ищете StreamingHttpResponse:

Класс StreamingHttpResponse используется для потоковой передачи ответа из Django в браузер. Вы можете захотеть сделать это, если генерация ответа занимает слишком много времени или использует слишком много памяти. Например, это полезно для генерации больших CSV-файлов.

Вам следует избегать размещения всех данных в памяти. Способ заключается в потоковой передаче всего рабочего процесса, от генерации (или чтения) json до его потребления вашим клиентским приложением.

решите этот вопрос таким образом

from django.http import HttpResponse
import pickle
data =  pickle.dumps(data_list)
unpickle_data = pickle.loads(data)
data_list = [unpickle_data]
return HttpResponse(data_list)

Я пробую этот способ, мои данные показывают мне в милях секунд

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