Получи случайную криптовалюту за регистрацию!

#лабораторный_журнал Время закатать рукава и сделать что-то | Борис опять

#лабораторный_журнал

Время закатать рукава и сделать что-то полезное: написать API для базы данных с изображениями.

Больше года не писал API, но я съел на этом столько собак, что код сам вылетает из под пальцев.
Мой любимый сетап:
* DB - PostgreSQL
* ORM - SqlAlchemy
* Миграции - Alembic
* API - Flask
* Сериализация- Marshmallow
* Валидация - covador
* Тесты - Pytest
* Форматирование кода - Black
* Деплой - Nginx + UWSGI, которые общаются по файлу-сокету как описано здесь. Такой сетап работает даже быстрее, чем uvicorn, потому что быстрее NGINX с настроенным кешированием просто некуда.

Разработка ведется через Docker. docker-compose run —rm —service-ports app bash поднимает локальный postgres, контейнер с приложением, контейнер с NGINX. Код передается в контейнер через volume. Разрабатываешь внутри контейнера, даже никаких venv/poetry/conda не надо - докер обеспечивает environment. Если надо можно подключиться к постгресу любым DB клиентом. Все это целиком повторяет то, как система выглядит в продакшне, поэтому нет проблемы “но на моем компьютере-то работает!” Тесты запускаются в такой же среде, используя реальную тестовую бд. Деплой можно организовать через запуск такого же docker-compose.yml, только с другими параметрами.

Этот надежный как швейцарские часы сетап покрывает все нужды типичной API. При необходимости к нему без труда прикручиваются другие приблуды типа RabbitMQ + Celery для асинхронных тасок.

Есть только одна загадка: зачем нужен Django?