Лучший способ оптимизировать API, возвращающий большой список записей в django rest framework - PullRequest
0 голосов
/ 04 марта 2020

У меня есть конечная точка, возвращающая список из 8000 записей. Я интегрировал его с приложением angular материала, но проблема в том, что список на стороне клиента загружается некоторое время. Какие варианты или предложения можно использовать для более быстрой загрузки записей?

просмотр

class PermitListAPIView(generics.ListAPIView):

    permission_classes = [AllowAny]

    def get(self,request,format=None):
        qs = IssuedPermit.objects.all()
        serializer = IssuedPermitSerializer(qs, many=True)
        # list_ = [json.loads(x.serialize_business()) for x in qs]

        return Response(data={"success": True, "msg": "success", "data":serializer.data}) 

1 Ответ

0 голосов
/ 04 марта 2020

Вы не можете обрабатывать много записей одновременно, так как это повлияет на производительность приложения на стороне клиента.
В качестве альтернативы, вы можете просто использовать нумерацию страниц для обработки запроса на стороне сервера. Это также обеспечит повышение производительности на стороне клиента. Более того, вы должны интегрировать концепцию pagination в django, чтобы включить эту функцию.

Отправка большего количества записей за один раз создаст нагрузку на сервер, а также на стороне клиента обрабатывать эти многочисленные записи одновременно. Так что лучше go с нумерацией страниц.

Пример кода ниже:

Конфигурирование в settings.py:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

Сериализатор:

class LargeResultsSetPagination(PageNumberPagination):
    page_size = 1000
    page_size_query_param = 'page_size'
    max_page_size = 10000

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'page_size'
    max_page_size = 1000
...