@Hideo002

Пожалуйста, объясните нюанс задания?

Помогите понять, пожалуйста. Есть задание. Я его понял, но не понял одну деталь. Что значит "эмулировать запрос", это, то-есть найти сервер который принимает нужный указанный запрос (типа работать с api dadata) или это нужно не по настоящему создать сервер который получает запрос, но по факту ничего не отдаст и сервера никакого не будет, имитацию этакую сделать?

Часть задания.
Сделать сервис, который принимает запрос с указанием кадастрового номера, широты и долготы, эмулирует отправку запроса на внешний сервер, который может обрабатывать запрос до 60 секунд. Затем должен отдавать результат запроса. Считается, что внешний сервер может ответить `true` или `false`.


def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        data = serializer.validated_data
        cadastre_number = data['cadastre_number']
        latitude = data['latitude']
        longitude = data['longitude']

        # эмулируем отправку запроса на внешний сервер
        external_url = f'https://emulate.ru/api?cadastre_number={cadastre_number}&latitude={latitude}&longitude={longitude}'
        start_time = time.time()
        response = requests.get(external_url)
        end_time = time.time()

        # А тут проверяем, получен ли ответ в течение 60 секунд
        if end_time - start_time > 60:
            return Response({'error': 'Timeout error'}, status=status.HTTP_408_REQUEST_TIMEOUT)

        # проверка, действителен ли ответ
        if response.status_code != 200 or response.text not in ['true', 'false']:
            return Response({'error': 'Invalid response'}, status=status.HTTP_400_BAD_REQUEST)

        #  сохраняем запрос и ответ в базу данных
        result = response.text == 'true'
        request = Request.objects.create(cadastre_number=cadastre_number, latitude=latitude, longitude=longitude, result=result)
        headers = self.get_success_headers(serializer.data)
        return Response(RequestSerializer(request).data, status=status.HTTP_201_CREATED, headers=headers)


Извиняюсь, я новичок и действительно не понимаю.
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Просто принять запрос, сделать случайную задержку до 60 секунд, вернуть случайный ответ true/false.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы