Django Rest Framework не возвращает ответ, если ответ слишком большой. http код 0

Мы создаем API на Django и используем Django Rest Framework. Этот API находится между двумя серверами, поэтому он получает запросы от сервера A, делает запросы к серверу B, форматирует ответ от сервера B и отвечает обратно серверу A с отформатированными данными.

Обработчик представления расширяет класс ApiView из DRF, а ответ представляет собой объект Response из DRF.

Вот псевдокод из файла views.py, чтобы представить ситуацию в перспективе:

class dummy(APIView)

    # define auth here

    def get(request):

        # handle the request from server A

        # get the content here, from server B

        # content is a list of up to 1028 elements

        response = Response({'status':'success','content':content}, status=200)
        return response <--- fails here if content length > 200 elements

Содержание представляет собой список dicts, каждый dicts содержит 4 - 5 пар ключ/значение, если длина этого списка меньше 200 элементов, ответ проходит нормально, но все, что больше 200 элементов, приведет к коду ответа 0 и никакого сообщения об ошибке, объясняющего, что произошло, кроме broken pipeошибка сервера A.

Мы увеличили таймаут на запрос от сервера A до 30 секунд, просто чтобы убедиться, и это ничего не изменило, ошибка также происходит намного быстрее, чем 30 секунд, поэтому мы знаем, что сервер A не думает, что API отключился.

Сервер B отвечает точно так, как ожидалось, и мы не получаем от него никаких ошибок.

Это просто передаваемый текст, никаких длинных строк или закодированных данных, есть ли ограничение на размер ответа в Django Rest Framework? Я не смог найти никаких ссылок на это, я видел только ограничения на размер запроса.

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

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