с демонcтрацией работы контейнерезации, кэширования, инъекции зависимостей
Стек технологий:
- Python 3.11.6
- FastAPI 0.115.6
- Redis 5.2.1
- SQLAlchemy 2.0.36
- Docker
- flake8
- mypy
- WSL
При использовании IDE PyCharm клонирование репозитория, установка виртуального окружения и зависимостей выполняется посредством интерфейса IDE. При использовании IDE VSCode и WSL потребуется выполнить следующие команды (ниже приводятся команды для Linux):
- Клонировать репозиторий:
git clone [email protected]:LeoNefesch/fastapi_crud_todo.git
- Зайти в директорию, установить и активировать виртуальное окружение:
cd fastapi_crud_todo
python3 -m venv .venv
source .venv/bin/activate
- Установить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
- В головной директории проекта создать файл
.env
для локальной разработки и.env.docker
для работы проекта в контейнерах: Файл.env
должен содержать следующие переменные окружения:
ENVIRONMENT=development
DATABASE_URL=sqlite:///./db/todo.db
REDIS_LOGGING_URL=redis://localhost:6379/0
REDIS_CACHING_URL=redis://localhost:6379/1
REDIS_PORT=6379
PORT=8000
DEBUG=True # переключите на False для продакшна
Файл .env.docker
должен содержать следующие переменные окружения:
DATABASE_URL=sqlite:///./db/todo.db
REDIS_LOGGING_URL=redis://redis:6379/0
REDIS_CACHING_URL=redis://redis:6379/1
REDIS_PORT=6379
PORT=8000
DEBUG=True # переключите на False для продакшна
Все команды выполняются из корня проекта.
- Redis (в одной консоли WSL):
sudo docker-compose up redis -d
- FastAPI (в другой консоли) (или через runner IDE - запуск файла main.py):
python main.py
Команда для WSL будет такой:
python3 main.py
- Работа с api-методами:
В браузере перейдите по ссылке http://127.0.0.1:8001/docs
Информацию о логировании и кэшировании можно получить через консоль redis (команды выполняются в WSL). В db=0 находятся логи redis, в db=1 - результаты кэширования.
redis-cli
127.0.0.1:6379> SELECT 0
127.0.0.1:6379> LRANGE http_logs 0 -1
127.0.0.1:6379> SELECT 1
127.0.0.1:6379> GET todos:all
Также логи можно найти в директории logs/ проекта.
Все команды выполняются из корня проекта.
- mypy:
mypy .
- flake8:
flake8
- тесты (в текущей реализации проходят при запущенном redis):
pytest tests/
Остановить контейнер с redis:
sudo docker-compose down
sudo docker-compose up -d
- Работа с api-методами:
В браузере перейдите по ссылке http://127.0.0.1:8000/docs
О получении информации о логировании и кэшировании - см. "Запуск проекта локально".
Остановить контейнеры с удалением сохранённых данных:
sudo docker-compose down -v
см. файл