Skip to content

Отображает курс валюты по отношению к рублю на заданную дату.

Notifications You must be signed in to change notification settings

blakkheart/currency_test_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💱 Currency API 💱

Описание

Отображает курс валюты по отношению к рублю на заданную дату. Например, при обращении к приложению по адресу 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.

Установка

  1. Склонируйте репозиторий:
git clone https://github.com/blakkheart/currency_test_task.git
  1. Перейдите в директорию проекта:
cd currency_test_task
  1. Установите и активируйте виртуальное окружение:
    • Windows
    python -m venv venv
    source venv/Scripts/activate
    • Linux/macOS
    python3 -m venv venv
    source venv/bin/activate
  2. Обновите pip:
    • Windows
    (venv) python -m pip install --upgrade pip
    • Linux/macOS
    (venv) python3 -m pip install --upgrade pip
  3. Установите зависимости из файла requirements.txt:
(venv) pip install -r currency_rate/requirements.txt

Создайте и заполните файл .env по примеру с файлом .env.example, который находится в корневой директории.

Использование

  • Использование с docker:

    1. Введите команду для запуска докер-контейнера:
    docker compose up
    1. Создайте и запустите миграции:
    docker compose exec backend python manage.py makemigrations
    docker compose exec backend python manage.py migrate
    1. Соберите и скопируйте статику:
    docker compose exec backend python manage.py collectstatic
    docker compose exec backend cp -r /currency_app/collected_static/. /backend_static/static/
  • Использование без docker:

    1. Перейдите в папку с файлом manage.py:
     cd currency_rate
    1. Создайте и запустите миграции:
     (venv) python manage.py makemigrations
     (venv) python manage.py migrate
    1. Запустите планировщик задач:
     (venv) python manage.py crontab add 

    Вы можете проверить, что планировщик работает и удалить его в случае необходимости с помощью команд:

     (venv) python manage.py crontab show
     (venv) python manage.py crontab remove
    1. Запустите сервер:
     (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