У меня есть конечная точка Django Rest Framework, в которую внешняя сторона отправляет данные в довольно большом объеме. Поскольку он выполнял около 200 вставок в секунду, я проверил запросы, которые он делал. Я обнаружил, что он на самом деле сначала сделал запрос SELECT, чтобы проверить, был ли дублированный идентификатор. Поскольку я не думал, что будут какие-либо (или, по крайней мере, не так много) дубликаты ключей, я хотел отключить эту проверку. Поэтому я добавил эту строку в мой сериализатор:
id = serializers.UUIDField(validators=[]) # Disable the validators for the id, which improves performance (rps) by over 200%
И, как вы можете видеть в комментарии, это значительно повышает производительность. Тем не менее, одним из недостатков является то, что он выдает ошибку 500, если фактически опубликован дубликат ключа, говоря:
duplicate key value violates unique constraint
Как я смогу отловить эту ошибку базы данных и вернуть аккуратный ответ вместо броска эта ошибка 500?