Генераторы проектов - Шаблоны¶
Чтобы начать работу быстрее, Вы можете использовать "генераторы проектов", в которые включены множество начальных настроек для функций безопасности, баз данных и некоторые эндпоинты API.
В генераторе проектов всегда будут предустановлены какие-то настройки, которые Вам следует обновить и подогнать под свои нужды, но это может быть хорошей отправной точкой для Вашего проекта.
Full Stack FastAPI PostgreSQL¶
GitHub: https://github.com/tiangolo/full-stack-fastapi-postgresql
Full Stack FastAPI PostgreSQL - Особенности¶
- Полностью интегрирован с Docker (основан на Docker).
- Развёртывается в режиме Docker Swarm.
- Интегрирован с Docker Compose и оптимизирован для локальной разработки.
- Готовый к реальной работе веб-сервер Python использующий Uvicorn и Gunicorn.
- Бэкенд построен на фреймворке FastAPI:
- Быстрый: Высокопроизводительный, на уровне NodeJS и Go (благодаря Starlette и Pydantic).
- Интуитивно понятный: Отличная поддержка редактора. Автодополнение кода везде. Меньше времени на отладку.
- Простой: Разработан так, чтоб быть простым в использовании и изучении. Меньше времени на чтение документации.
- Лаконичный: Минимизировано повторение кода. Каждый объявленный параметр определяет несколько функций.
- Надёжный: Получите готовый к работе код. С автоматической интерактивной документацией.
- Стандартизированный: Основан на открытых стандартах API (OpenAPI и JSON Schema) и полностью совместим с ними.
- Множество других возможностей включая автоматическую проверку и сериализацию данных, интерактивную документацию, аутентификацию с помощью OAuth2 JWT-токенов и т.д.
- Безопасное хранение паролей, которые хэшируются по умолчанию.
- Аутентификация посредством JWT-токенов.
- Модели SQLAlchemy (независящие от расширений Flask, а значит могут быть непосредственно использованы процессами Celery).
- Базовая модель пользователя (измените или удалите её по необходимости).
- Alembic для организации миграций.
- CORS (Совместное использование ресурсов из разных источников).
- Celery, процессы которого могут выборочно импортировать и использовать модели и код из остальной части бэкенда.
- Тесты, на основе Pytest, интегрированные в Docker, чтобы Вы могли полностью проверить Ваше API, независимо от базы данных. Так как тесты запускаются в Docker, для них может создаваться новое хранилище данных каждый раз (Вы можете, по своему желанию, использовать ElasticSearch, MongoDB, CouchDB или другую СУБД, только лишь для проверки - будет ли Ваше API работать с этим хранилищем).
- Простая интеграция Python с Jupyter Kernels для разработки удалённо или в Docker с расширениями похожими на Atom Hydrogen или Visual Studio Code Jupyter.
- Фронтенд построен на фреймворке Vue:
- Сгенерирован с помощью Vue CLI.
- Поддерживает аутентификацию с помощью JWT-токенов.
- Страница логина.
- Перенаправление на страницу главной панели мониторинга после логина.
- Главная страница мониторинга с возможностью создания и изменения пользователей.
- Пользователь может изменять свои данные.
- Vuex.
- Vue-router.
- Vuetify для конструирования красивых компонентов страниц.
- TypeScript.
- Сервер Docker основан на Nginx (настроен для удобной работы с Vue-router).
- Многоступенчатая сборка Docker, то есть Вам не нужно сохранять или коммитить скомпилированный код.
- Тесты фронтенда запускаются во время сборки (можно отключить).
- Сделан настолько модульно, насколько возможно, поэтому работает "из коробки", но Вы можете повторно сгенерировать фронтенд с помощью Vue CLI или создать то, что Вам нужно и повторно использовать то, что захотите.
- PGAdmin для СУБД PostgreSQL, которые легко можно заменить на PHPMyAdmin и MySQL.
- Flower для отслеживания работы Celery.
- Балансировка нагрузки между фронтендом и бэкендом с помощью Traefik, а значит, Вы можете расположить их на одном домене, разделив url-пути, так как они обслуживаются разными контейнерами.
- Интеграция с Traefik включает автоматическую генерацию сертификатов Let's Encrypt для поддержки протокола HTTPS.
- GitLab CI (непрерывная интеграция), которая включает тестирование фронтенда и бэкенда.
Full Stack FastAPI Couchbase¶
GitHub: https://github.com/tiangolo/full-stack-fastapi-couchbase
⚠️ ПРЕДУПРЕЖДЕНИЕ ⚠️
Если Вы начинаете новый проект, ознакомьтесь с представленными здесь альтернативами.
Например, генератор проектов Full Stack FastAPI PostgreSQL может быть более подходящей альтернативой, так как он активно поддерживается и используется. И он включает в себя все новые возможности и улучшения.
Но никто не запрещает Вам использовать генератор с СУБД Couchbase, возможно, он всё ещё работает нормально. Или у Вас уже есть проект, созданный с помощью этого генератора ранее, и Вы, вероятно, уже обновили его в соответствии со своими потребностями.
Вы можете прочитать о нём больше в документации соответствующего репозитория.
Full Stack FastAPI MongoDB¶
...может быть когда-нибудь появится, в зависимости от наличия у меня свободного времени и прочих факторов. 😅 🎉
Модели машинного обучения на основе spaCy и FastAPI¶
GitHub: https://github.com/microsoft/cookiecutter-spacy-fastapi
Модели машинного обучения на основе spaCy и FastAPI - Особенности¶
- Интеграция с моделями spaCy NER.
- Встроенный формат запросов к когнитивному поиску Azure.
- Готовый к реальной работе веб-сервер Python использующий Uvicorn и Gunicorn.
- Встроенное развёртывание на основе Azure DevOps Kubernetes (AKS) CI/CD.
- Многоязычность. Лёгкий выбор одного из встроенных в spaCy языков во время настройки проекта.
- Легко подключить модели из других фреймворков (Pytorch, Tensorflow) не ограничиваясь spaCy.