Веб-приложение для получения и отображения случайных пользователей с использованием API randomuser.me.
Приложение предоставляет веб-интерфейс для загрузки и отображения информации о случайных пользователях. При старте сервера автоматически загружается 1000 случайных пользователей из API. Данные хранятся в базе данных и отображаются в табличном виде с возможностью пагинации.
- FastAPI: Выбран как современный, быстрый фреймворк с отличной поддержкой асинхронности и автоматической документацией API. Позволяет эффективно обрабатывать большое количество запросов и предоставляет встроенную валидацию данных через Pydantic.
- PostgreSQL: Выбрана как надежная реляционная БД с хорошей производительностью при работе с большими объемами данных. Поддерживает JSON-поля, что удобно для хранения дополнительной информации о пользователях.
- SQLAlchemy: ORM для работы с базой данных, предоставляет удобный интерфейс для работы с данными и поддерживает асинхронные операции.
- Alembic: Для управления миграциями базы данных, обеспечивает безопасное обновление схемы БД.
- HTML/CSS/JavaScript: Использованы базовые веб-технологии для создания простого и функционального интерфейса.
- Bootstrap: Для быстрой разработки адаптивного интерфейса и стилизации таблицы.
.
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── models.py
│ └── database.py
├── tests/
│ ├── __init__.py
│ ├── test_api.py
│ └── conftest.py
├── alembic/
│ ├── versions/
│ └── env.py
├── Dockerfile
├── docker-compose.yml
├── init.sh
├── requirements.txt
└── README.md
- Docker
- Docker Compose
- Клонируйте репозиторий:
git clone https://github.com/KruglovEgor/yadro_python
cd yadro_python- Запустите приложение с помощью Docker Compose:
docker-compose up --buildПриложение будет доступно по адресу: http://localhost:8000
При первом запуске:
- Создается база данных PostgreSQL
- Применяются миграции Alembic
- Загружается 1000 случайных пользователей из API
- Запускается веб-сервер
- Убедитесь, что контейнеры запущены:
docker-compose ps- Запустите тесты:
docker-compose exec web pytest- Для более подробного вывода:
docker-compose exec web pytest -v- Для запуска конкретного теста:
docker-compose exec web pytest tests/test_api.py::test_read_root -v- Просмотр логов приложения:
docker-compose logs -f web- Просмотр логов базы данных:
docker-compose logs -f db- Проверка подключения к базе данных:
docker-compose exec db psql -U user -d random_users- Очистка всех данных (включая базу):
docker-compose down -v- Пересборка контейнеров (после изменения зависимостей):
docker-compose down
docker-compose build
docker-compose up -dПосле запуска тестов база данных содержит только тестовые данные. Чтобы вернуться к нормальной работе с реальными данными:
- Остановите контейнеры:
docker-compose down- Удалите все данные (включая тестовую базу):
docker-compose down -v- Запустите приложение заново:
docker-compose up -dЭто пересоздаст базу данных и загрузит 1000 реальных пользователей из API при старте приложения.
GET /- Основная страница с формой для загрузки пользователей и таблицейGET /{user_id}- Получение информации о конкретном пользователеGET /random- Получение информации о случайном пользователе
DATABASE_URL- URL для подключения к базе данных PostgreSQLPYTHONPATH- Путь к директории приложения