Комментарии 10
Спасибо, хорошая статья. Замечу только, что FastApi не просто веб сервер, а полноценный фрэймворк. К нему alembic, sqlalchemy, rabbitmq и в общем-то все что надо для счастья.
+2
Спасибо за замечание
Возможно FastApi в будущем станет новым стандартом для асинхронных python веб сервисов, т к многие возможности предоставляет из коробки.
К сожалению я пока не получил достаточно опыта использования FastApi на нагруженных проектах в prod. Но если эксперименты с этим фреймворком не выявят узких мест — то скорее всего будем новые сервисы делать на нём
Возможно FastApi в будущем станет новым стандартом для асинхронных python веб сервисов, т к многие возможности предоставляет из коробки.
К сожалению я пока не получил достаточно опыта использования FastApi на нагруженных проектах в prod. Но если эксперименты с этим фреймворком не выявят узких мест — то скорее всего будем новые сервисы делать на нём
+1
Я бы всё таки вместо
id = Column(Integer, autoincrement=True, primary_key=True)
использовал
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
+2
А лучше будет использовать оба варианта. Int для внутренних нужд и uuid для взаимодействием с миром. В таком случае будет легче реализовать вертикальный шардинг/партицирование и скрыть от пользователя детали реализации ID.
+2
да, получается для внутренних проектов можно оставить ID, но на клиентскую часть лучше выводить uuid4 для защиты от перебора
В базовой библиотеке оставил Integer для упрощения понимания концепта
В базовой библиотеке оставил Integer для упрощения понимания концепта
+1
И мне кажется, что вместо обновления в коде updated_at лучше сразу в классе прописать:
updated_at = Column(DateTime, default=datetime.datetime.now, server_default=text('now()', onupdate=datetime.datetime.now)
В целом можно вообще вынести id, created_at, updated_at в отдельный mixin или абстрактный класс.
+2
Спасибо за статью.
Расскажите, пожалуйста, как вы управляете общим кодом между сервисами? Что у вас получается выделить отдельно, а что приходится копировать?
Расскажите, пожалуйста, как вы управляете общим кодом между сервисами? Что у вас получается выделить отдельно, а что приходится копировать?
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
11 друзей Sanic’а – собираем асинхронное веб-приложение на Python