Pull to refresh

Comments 16

Если кто-то планирует задействовать DRF для долгоживущего и очень highload проекта (десятки тысяч rps), то я бы обязательно упомянул два основных недостатка, на мой взгляд.

Первый недостаток. Отсутствие встроенного генератора документации. Все эти нашлёпки, ставящиеся сбоку, периодически валятся с непонятными симптомами, как только API чуточку усложняется. Конкретные примеры сейчас не приведу. Но это постоянный источник небольшой, но заметной боли (если говорить про годы поддержки и развития API).

Второй недостаток. Когда всё начинает тормозить (понимаю, что 99% проектов с этим не столкнётся), и начинаешь исследовать тормоза в профайлере и дебаггере, то там творится какая-то дичь. Данные десятки, если не сотни, раз преобразовываются из одного типа в другой, json'ы сериализуются, десереализуются, и сериализуются снова, всё это передается через лабиринт вызовов вверх и вниз по стеку. Когда начинает играть роль каждая микросекунда, выясняется, что этот монстр жуёт жвачку из данных, как корова, очень долго, и ускорить этот процесс без переписывания без DRF, никак нельзя.

А альтернативы какие?

Яндекс думает, что самописное все на плюсах. Как показывает их опыт - это вполне себе вариант

Честно говоря, сам ещё не определился. В конкретных ручках, где важны сотни и десятки миллисекунд, делаю по самому простому brute force варианту: заменяю всю машинерию DRF на закат солнца вручную: ручная десериализация и сериализация.

Если можно легкой кровью вынести часть ручек в отдельный микросервис, выносится в микросервис на FastAPI или Go.

Но повторюсь: большинство с этим не столкнётся. Однако, если вдруг сталкиваешься, то положение плачевное. DRF - всё-таки наверное одна из самых тяжёлых реализаций REST. Хотя бенчмарки не проводил, но по результатам профилирования возникали мысли, что оно всё переусложнено на порядок, а то и два.

Первый недостаток хорошо закрывается drf-specracular

Проблема всех этих проектов, что они - сторонние. Их авторы не всегда успевают или хотят синхронизироваться с версиями DRF, или иногда вообще забрасывают свои творения на полдороге (как было с drf-yasg, или чем-то похожим, копаться и вспоминать сейчас некогда).

Я бы с таким настроением предложил вообще код перестать писать) Ну, или писать абсолютно всё самому (тут просто пожелаю удачи).

Во-первых, у вас всегда будет что-то стороннее. Во-вторых, стороннее - необязательно плохое и не всегда умирает. Сам drf тоже, по сути, сторонний для джанги, но в целом всё даже ок (ну, кроме отсутствия поддержки асинка).

В третьих, не стороннее не даёт вам никаких гарантий. В дрф же есть встроенная генерация опенапи, но кто-то ей пользуется?)

Максимально согласен. Весь Python основан на всем стороннем) И так мы можем прийти что и Django с нуля писать нужно)

Полноценное API 

создадим API, которое будет

Так пишет Опытный python разработчик с многолетним стажем.
Печаль

Слово “API” (Application Programming Interface) в русском языке обычно используется как среднего рода. Например, можно сказать “это API”, “новое API” или “полноценное API”. Однако, если быть точным, “интерфейс” — это слово мужского рода. Но я предпочитаю использовать тот вариант, который чаще встречается в реальной жизни.

Теперь хотелось бы понять, как эта ошибка указывает на мою неопытность?

Что касается кода моего полноценного API, есть ли там какие-то ошибки? Или вы не работаете с кодом?

лучше писать и говорить правильно, чем неправильно

Как использование слова “оно” в отношении API указывает на мою неопытность как программиста? Я и в повседневной жизни так говорю. Мы с вами не работаем вместе, вы меня не знаете, но решаете, что можно делать выводы о моем опыте. Ваш комментарий сначала показался мне написанным подростком, а теперь оказывается, что вам за 50. Как это вообще возможно? Если я ошибся, скажите об этом. API - мужской род, исправьте. Зачем упоминать мой статус и опыт здесь?

Много шума из ничего

API - мужской род, исправьте

Так пишет Опытный python разработчик с многолетним стажем. Печаль

На вопрос по поводу опыта вы так и не ответите?

Хейтерс гона хейт. Оставь его, ему просто обидно что ты собрался и написал статью, а он не шмагла +)

И да, спасибо за статью!

Спасибо за поддержку)

Sign up to leave a comment.