Как отловить ошибку тайм-аута до того, как DRF поднимет свой тайм-аут? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть внешний API для работы с ним. У меня есть собственная конечная точка в DRF , которая должна отправлять запрос на внешний API и обрабатывать ответ от него, прежде чем я верну его клиентскому приложению. Это пример кода:

serializers.py

        api_integration = validated_data["form"].api_integration
        data = dict()
        for field in validated_data['form_fields']:
            data.update(field)

        headers = dict()
        headers["Authorization"] = api_integration.token
        headers["Content-Type"] = api_integration.content_type
        try:
            response = requests.post(
                api_integration.url,
                data=data,
                headers=headers
            )
        except requests.exceptions.RequestException:
            return Response({"detail": "Something went wrong"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

Когда я использую консоль отладки в PyCharm и устанавливаю точку прерывания на Строка return Response... также работает, я обрабатываю ошибку 502 из внешнего API и возвращаю свой собственный ответ, но когда этот код выполняется без отладочных точек останова, я получаю 502 BadGateway из DRF .

Я нахожу только 1 решение - изменить время ожидания в моих настройках nginx, но для меня это не лучшее решение, я хочу обработать эту ошибку времени ожидания только в этой конечной точке.

...