Написать сервис "Конвертер валют" который работает по REST-API.
GET /api/rates?from=USD&to=RUB&value=1
{
"result": 62.16
}
Любой фреймворк в пределах python.
Данные о текущих курсах валют необходимо получать с внешнего сервиса.
Контейнерезация, документация, и прочее — приветствуется.
Запуск проекта возможен в трех вариантах:
Для запуска проекта на локальной машине необходимо выполнить следующее:
- Скачать проект из репозитория на локальный компьютер.
- В корневой директории проекта создать файл .env содержащий значения следующих переменных:
- SECRET_KEY=django-insecure-@-4=yotzc2s$rpk@$(=tyx3vrd!wj$t0yz0d-=-#yv+ph+&5-@
- Настройка доступа к базе данных СУБД PostgreSQL
- DB_NAME=change_currencies
- DB_USER=...
- DB_PASSWORD=...
- DB_HOST=localhost
- DB_PORT=5432
- Ключ доступа к API сайта openexchangerates.org
- APP_ID=c28e5e632ef64a8a9472a369d121e327
- При необходимости создать и активировать виртуальное окружение проекта, выполнив команды в терминале:
$ python3 -m venv venv
$ source venv/bin/activate
- Установить зависимости проекта, выполнив команду в терминале:
$ pip install -r requirements.txt
- Установить серверы СУБД PostgreSQL и Redis. В СУБД PostgreSQL создать базу данных change_currencies.
- Применить миграции к базе данных, выполнив команду в терминале:
$ python3 manage.py migrate
- Запустить сервер Django выполнив команду в терминале:
$ python3 manage.py runserver
- Запустить воркер Celery, выпонив команду в терминале:
$ celery -A change_currencies worker --loglevel=info
- Запустить планировщик задач, выполнив команду в терминале:
$ celery -A change_currencies beat --loglevel=info
- Для получения доступа в панель администратора создать суперпользователя, выполнив команду в терминале:
$ python3 manage.py createsuperuser
Панель администратора доступна по URL адресу https://127.0.0.1:8000/admin/
В корневой директории проекта расположена коллекция запросов к API проекта, в файле Change Currencies.postman_collection.json
- Установить Docker.
- В файле .env заменить значение переменной
- DB_HOST=postgres
- В файле settings.py заменить значения переменных:
- CELERY_BROKER_URL = 'redis://redis:6379/0'
- CELERY_RESULT_BACKEND = 'redis://redis:6379/0'
- Проверить соответствие путей к файлу .env указанных как volume.
- Запустить проект в контейнерах Docker Compose, выполнив команду в терминале:
$ sudo docker compose up -d
- На удаленной машине устанавливаем Docker.
- На удаленной машине создаем директорию change_currencies, выполнив команду в удаленном терминале:
$ mkdir change_currencies && cd change_currencies
- Создать файл .env содержащий чувствительные данные, с помощью любого текстового редактора.
- На локальной машине производим копирование файла docker-compose-server.yaml на удаленный сервер.
$ scp <путь до проекта>/docker-compose-server.yaml <имя>@<адрес>: change_currencies/docker-compose.yaml
- Через удаленный терминал выполняем команду:
$ sudo docker compose up -d