DRF Пагинация пользовательского ответа без модели APIView

Здравствуйте, у меня есть проект на Django, который выполняет несколько запросов к различным базам данных, возвращая их в несколько конечных точек, для этого я использую Pandas и DRF (APIViews)

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

Есть ли способ постранично отобразить результаты так, как я это делаю?

Оставляю несколько фрагментов своего кода.

class AffiliateAPIView(APIView):
    permission_classes = (IsAuthenticated,)  
    def get(self, request):
        insurance = self.request.query_params.get('insurance', None)
        emergensys_df = pd.read_sql_query(general_attention(insurance), engine())
        return Response(emergensys_df.to_dict(orient='records'))

Вам следует реализовать потоковый ответ. В Django для этого есть StreamingHttpResponse: https://docs.djangoproject.com/en/3.2/ref/request-response/#streaminghttpresponse-objects. В основном, вы должны сделать следующее:

  • создайте генератор, который получает данные из базы данных по частям, используя LIMIT и OFFSET SQL операторы, обрабатывает их и возвращает по частям либо.
  • создайте и верните StreamingHttpResponse и передайте в него генератор, как: return StreamingHttpResponse(your_generator)
Вернуться на верх