Как стать автором
Обновить

Комментарии 10

Спасибо, хорошая статья. Замечу только, что FastApi не просто веб сервер, а полноценный фрэймворк. К нему alembic, sqlalchemy, rabbitmq и в общем-то все что надо для счастья.
Спасибо за замечание
Возможно FastApi в будущем станет новым стандартом для асинхронных python веб сервисов, т к многие возможности предоставляет из коробки.
К сожалению я пока не получил достаточно опыта использования FastApi на нагруженных проектах в prod. Но если эксперименты с этим фреймворком не выявят узких мест — то скорее всего будем новые сервисы делать на нём

Я бы всё таки вместо


id = Column(Integer, autoincrement=True, primary_key=True)

использовал


id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
А лучше будет использовать оба варианта. Int для внутренних нужд и uuid для взаимодействием с миром. В таком случае будет легче реализовать вертикальный шардинг/партицирование и скрыть от пользователя детали реализации ID.
да, получается для внутренних проектов можно оставить ID, но на клиентскую часть лучше выводить uuid4 для защиты от перебора

В базовой библиотеке оставил Integer для упрощения понимания концепта

И мне кажется, что вместо обновления в коде updated_at лучше сразу в классе прописать:


updated_at = Column(DateTime, default=datetime.datetime.now, server_default=text('now()', onupdate=datetime.datetime.now)

В целом можно вообще вынести id, created_at, updated_at в отдельный mixin или абстрактный класс.

согласен, во многих местах так и используется, просто решил не усложнять базовый проект
Спасибо за статью.
Расскажите, пожалуйста, как вы управляете общим кодом между сервисами? Что у вас получается выделить отдельно, а что приходится копировать?
Получается выделить отдельно boilerplate базового приложения(в дополнение к текущему примеру там есть обвязка из раздела «А что дальше»).
А так же код из папки «modules» хорошо ложится во внешнюю библиотеку, чтобы единообразно его подтягивать во все проекты как внешнюю зависимость.
Спасибо.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий