Отображает курс валюты по отношению к рублю на заданную дату. Например, при обращении к приложению по адресу http://localhost:8000/rate/?charcode=AUD&date=2024-01-01 , оно выводит результат в виде JSON в формате:
{
"charcode": "AUD",
"date": "2024-01-01",
"rate": 57.0627
}
Данные по валютам хранятся в базе данных приложения. Приложение автоматически раз в сутки опрашивает API ЦБ РФ и подгружает актуальные данные в БД.
- Django - база приложения.
- PostgreSQL в качестве базы данных.
- Django-crontab для реализации выполнения фоновых задач в указанное время.
- Requests для доступа к API Центробанка РФ.
- Redis для работы Celery.
- Celery для реализации выполнения фоновых задач в указанное время в docker-контейнере.
- Docker - контейнеризация приложения.
- Nginx - для раздачи статики в docker.
- Склонируйте репозиторий:
git clone https://github.com/blakkheart/currency_test_task.git
- Перейдите в директорию проекта:
cd currency_test_task
- Установите и активируйте виртуальное окружение:
- Windows
python -m venv venv source venv/Scripts/activate
- Linux/macOS
python3 -m venv venv source venv/bin/activate
- Обновите pip:
- Windows
(venv) python -m pip install --upgrade pip
- Linux/macOS
(venv) python3 -m pip install --upgrade pip
- Установите зависимости из файла requirements.txt:
(venv) pip install -r currency_rate/requirements.txt
Создайте и заполните файл .env по примеру с файлом .env.example, который находится в корневой директории.
-
- Введите команду для запуска докер-контейнера:
docker compose up
- Создайте и запустите миграции:
docker compose exec backend python manage.py makemigrations docker compose exec backend python manage.py migrate
- Соберите и скопируйте статику:
docker compose exec backend python manage.py collectstatic docker compose exec backend cp -r /currency_app/collected_static/. /backend_static/static/
-
- Перейдите в папку с файлом manage.py:
cd currency_rate
- Создайте и запустите миграции:
(venv) python manage.py makemigrations (venv) python manage.py migrate
- Запустите планировщик задач:
(venv) python manage.py crontab add
Вы можете проверить, что планировщик работает и удалить его в случае необходимости с помощью команд:
(venv) python manage.py crontab show (venv) python manage.py crontab remove
- Запустите сервер:
(venv) python manage.py runserver
Если все сделано корректно, сервер запустится по адресу localhost:8000 и вы сможете получить доступ к API. Доступны два эндпоинта - localhost:8000/rate/?charcode={ВАЛЮТА}&date={ДАТА} и localhost:8000/admin/
Вы можете поменять время опроса API ЦБ РФ, изменив значение в переменной CRONJOBS в файле settings.py, если запускается без docker, или значение переменной CELERY_BEAT_SCHEDULE.schedule, если запускается через docker, или, если есть необходимость, опрашивать можно вручную с помощью команды:
python manage.py load_data
Также вы можете создать суперпользователя и изменять значения через админ-панель по адресу localhost:8000/admin/ :
python manage.py createsuperuser