Skip to main content

Интеграция с Региональной витриной данных

Project description

Проект "Интеграция с Региональной витриной данных"

Описание концепции

Принцип работы

Требования к окружению

Разворачивание

Параметры конфигурационного файла

В разных проектах существуют различные способы добавления настроек, где-то через плагины, где-то напрямую в settings.py. Будет рассмотрен подход указания настроек в settings.py и указания параметров в конфигурационном файле.

Для возможности конфигурирования необходимо проделать ряд действий. В settings.py нужно добавить:

  • Определение значений по умолчанию настроек:

    PROJECT_DEFAULT_CONFIG.update({
        # Настройки РВД
        ('rdm_general', 'EXPORT_ENTITY_ID_PREFIX'): '', # Дефолтное значение нужно изменить на специфическое системе
        ('rdm_general', 'COLLECT_CHUNK_SIZE'): 500,
        ('rdm_general', 'EXPORT_CHUNK_SIZE'): 500,
        ('rdm_transfer_task', 'MINUTE'): '0',
        ('rdm_transfer_task', 'HOUR'): '*/4',
        ('rdm_transfer_task', 'TRANSFER_TASK_DAY_OF_WEEK'): '*',
        ('rdm_transfer_task', 'TIMEDELTA'): 3600,
        ('rdm_upload_status_task', 'MINUTE'): '*/30',
        ('rdm_upload_status_task', 'HOUR'): '*',
        ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
        ('uploader_client', 'URL'): 'http://localhost:8090',
        ('uploader_client', 'DATAMART_NAME'): '',
        ('uploader_client', 'REQUEST_RETRIES'): 10,
        ('uploader_client', 'REQUEST_TIMEOUT'): 10,
        ('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
    })
    
  • Получение значений настроек из конфигурационного файла:

    # Ссылка на каталог с файлами для загрузки
    UPLOADS = 'uploads'
    
    # =============================================================================
    # Интеграция с Региональной витриной данных (РВД)
    # =============================================================================
    
    # Префикс идентификаторов записей сущностей специфический для продукта
    RDM_EXPORT_ENTITY_ID_PREFIX = conf.get('rdm_general', 'EXPORT_ENTITY_ID_PREFIX') 
    
    # Количество записей моделей ЭШ обрабатываемых за одну итерацию сбора данных
    RDM_COLLECT_CHUNK_SIZE = conf.get_int('rdm_general', 'COLLECT_CHUNK_SIZE')
    
    # Количество записей моделей обрабатываемых за одну итерацию экспорта данных
    RDM_EXPORT_CHUNK_SIZE = conf.get_int('rdm_general', 'EXPORT_CHUNK_SIZE')
    
    # Настройка запуска периодической задачи выгрузки данных:
    RDM_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task', 'MINUTE')
    RDM_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task', 'HOUR')
    RDM_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task', 'DAY_OF_WEEK')
    RDM_TRANSFER_TASK_TIMEDELTA = conf.get_int('rdm_transfer_task', 'TIMEDELTA')
    
    # Настройка запуска периодической задачи статуса загрузки данных в витрину:
    RDM_UPLOAD_STATUS_TASK_MINUTE = conf.get('rdm_upload_status_task', 'MINUTE')
    RDM_UPLOAD_STATUS_TASK_HOUR = conf.get('rdm_upload_status_task', 'HOUR')
    RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK = conf.get('rdm_upload_status_task', 'DAY_OF_WEEK')
    
    # Загрузка данных в Региональную витрину данных (РВД)
    # Адрес витрины (schema://host:port)
    RDM_UPLOADER_CLIENT_URL = conf.get('uploader_client', 'URL')
    
    # Мнемоника Витрины
    RDM_UPLOADER_CLIENT_DATAMART_NAME = conf.get('uploader_client', 'DATAMART_NAME')
    
    # Количество повторных попыток запроса
    RDM_UPLOADER_CLIENT_REQUEST_RETRIES = conf.get_int('uploader_client', 'REQUEST_RETRIES')
    
    # Таймаут запроса, сек
    RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT = conf.get_int('uploader_client', 'REQUEST_TIMEOUT')
    
    # Включить эмуляцию отправки запросов
    RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION = conf.get_bool('uploader_client', 'ENABLE_REQUEST_EMULATION')
    
    

В дефолтный конфиг проекта необходимо добавить:

# Общие настройки интеграции с РВД
[rmd_general]
# Префикс идентификаторов записей сущностей специфический для продукта. Указывается в settings.py и не должен 
# изменяться. Возможность изменения через конфигурационный файл оставлена для экстренных случаев.
# EXPORT_ENTITY_ID_PREFIX = 
# Количество записей моделей обрабатываемых за одну итерацию экспорта данных
EXPORT_CHUNK_SIZE = 500
# Количество записей моделей ЭШ обрабатываемых за одну итерацию сбора данных
COLLECT_CHUNK_SIZE = 500

# Настройка запуска периодической задачи выгрузки данных
[rdm_transfer_task]
MINUTE=*/2
HOUR=*
DAY_OF_WEEK=*
# Дельта между прошлым и текущим запуском, сек
TIMEDELTA=120

# Настройка запуска периодической задачи статуса загрузки данных в витрину
[rdm_upload_status_task]
MINUTE=*/2
HOUR=*
DAY_OF_WEEK=*

[uploader_client]
# Адрес витрины
URL = http://localhost:8090
# Мнемоника Витрины
DATAMART_NAME = test
# Количество повторных попыток запроса
REQUEST_RETRIES = 10
# Таймаут запроса, сек
REQUEST_TIMEOUT = 10
# Включить эмуляцию отправки запросов
ENABLE_REQUEST_EMULATION = True

На основе дефолтного конфига произвести конфигурирование приложений.

Перечень настроек в settings.py указан в таблице ниже.

Название настройки в settings Описание Значение по умолчанию
UPLOADS Основная директория в MEDIA, в которой будет создана директория edu_rdm_integration для сохранения файлов для дальнейшей выгрузки 500
RDM_COLLECT_CHUNK_SIZE Количество записей моделей обрабатываемых за одну итерацию сбора данных 500
RDM_EXPORT_CHUNK_SIZE Количество записей моделей обрабатываемых за одну итерацию экспорта 500
RDM_UPLOADER_CLIENT_URL Адрес витрины (schema://host:port) 'http://localhost:8090'
RDM_UPLOADER_CLIENT_DATAMART_NAME Мнемоника Витрины 'test'
RDM_UPLOADER_CLIENT_REQUEST_RETRIES Количество повторных попыток запроса 10
RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT Таймаут запроса, сек 10
RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION Включить эмуляцию отправки запросов True
RDM_TRANSFER_TASK_MINUTE Настройка запуска периодической задачи выгрузки данных. Минута '0'
RDM_TRANSFER_TASK_HOUR Настройка запуска периодической задачи выгрузки данных. Час '*/4'
RDM_TRANSFER_TASK_DAY_OF_WEEK Настройка запуска периодической задачи выгрузки данных. День недели '*'
RDM_TRANSFER_TASK_TIMEDELTA Дельта между предыдущим и следующим запуском периодической задачи в секундах 3600
RDM_UPLOAD_STATUS_TASK_MINUTE Настройка запуска периодической задачи статуса загрузки данных в витрину. Минута '*/30'
RDM_UPLOAD_STATUS_TASK_HOUR Настройка запуска периодической задачи статуса загрузки данных в витрину. Час '*'
RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели '*'

Сборка и распространение

Инструкция для разработчика

Настройка PyCharm для работы

Запуск в системе

Запуск в контейнере

Правила внесения изменений

История изменений

Все изменения проекта должны быть отражены в этом файле.

Формат основан на Keep a Changelog и проект следует Семантическому версионированию.

[x.y.z] - гггг-мм-дд

Здесь должно быть расширенное описание того, что было сделано, какие есть планы у команды по дальнейшему развитию. Желательно будущие цели привязывать к конкретным задачам. Т.е. на каждую цель нужно поставить отдельную задачу и отразить ее номер здесь.

Добавлено

Изменено

Исправлено

[0.4.1] - 2023-08-09

Доработки для реализации принудительного выполнения функций экспорта данных сущностей.

Добавлено

  • EDUSCHL-20235 PATCH Доработки для реализации принудительного выполнения функций экспорта данных сущностей.

Изменено

Исправлено

[0.4.0] - 2023-08-09

Реализованы общие классы для команд сбора/экспорта.

Добавлено

  • EDUSCHL-20200 MINOR Добавлены общие модели, методы и классы.

Изменено

  • EDUSCHL-20200 MINOR Реализованы общие классы для команд сбора/экспорта.

Исправлено

[0.3.3] - 2023-08-08

Добавлено принудительное выполнение функций в ранере для экономии памяти.

Добавлено

Изменено

Исправлено

  • EDUSCHL-20235 PATCH Добавлено принудительное выполнение функций в ранере для экономии памяти.

[0.3.2] - 2023-08-08

Откат к спискам необработанных логов. Исправлена ошибка бесконечного создания чанков логов.

Добавлено

Изменено

Исправлено

  • EDUSCHL-20235 PATCH Откат к спискам необработанных логов.

[0.3.1] - 2023-08-08

Организована передача необработанных логов в виде генератора.

Добавлено

Изменено

  • EDUSCHL-20235 PATCH Организована передача необработанных логов в виде генератора.

Исправлено

[0.3.0] - 2023-08-06

Добавление функциональности для отложенного заполнения кешей. Заполнение производится перед началом работы запускаемого объекта.

Добавлено

  • EDUSCHL-20235 PATCH Добавлено отложенное заполнение кешей хелперов функций.

  • EDUSCHL-20235 MINOR Добавлено проставление подэтапа выгрузки данных у записей моделей.

Изменено

Исправлено

[0.2.2] - 2023-08-06

Для API РВД добавлена поддержка параметра типа операции для загрузки данных.

Добавлено

  • EDUSCHL-19920 PATCH Для API РВД добавлена поддержка параметра типа операции для загрузки данных.

[0.2.1] - 2023-08-05

Восстановление сборки пакета после ухода с poetry.

Добавлено

Изменено

Исправлено

  • EDUSCHL-19919 PATCH Восстановление сборки пакета после миграции с poetry.

[0.2.0] - 2023-08-04

Перенос стратегий формирования Функций используемых в генерации исходников.

Добавлено

  • EDUSCHL-19919 MINOR Перенесены стратегии создания Функций из ЭШ.

Изменено

Исправлено

[0.1.4] - 2023-08-03

Возвращение ранее удаленных зависимостей миграции

Добавлено

Изменено

  • EDUSCHL-20209 PATCH Возвращение зависимостей миграции.

  • EDUSCHL-20209 PATCH Доработки по формированию документации.

  • EDUSCHL-20200 Закреплены версии зависимостей, добавлена ссылка на uploader-client

Исправлено

[0.1.3] - 2023-07-24

Для раскатки миграций на ЭШ, пришлось закомментировать зависимости в initial-миграции.

Добавлено

Изменено

  • EDUSCHL-19919 PATCH Вынести общую часть для работы с РВД из ЭШ для использования в ЭК.

Исправлено

[0.1.2] - 2023-07-23

Внесены изменения в кодовую базу после переноса механизма логирования из ЭШ в educommon.

Добавлено

Изменено

  • EDUSCHL-19919 PATCH Вынести общую часть для работы с РВД из ЭШ для использования в ЭК.

Исправлено

[0.1.0] - 2023-07-18

Внесены изменения в кодовую базу после переноса механизма логирования из ЭШ в educommon.

Добавлено

  • EDUSCHL-19919 MINOR Перенос базовых компонентов интеграции с РВД из ЭШ.

Изменено

Исправлено

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edu-rdm-integration-0.4.1.tar.gz (61.9 kB view hashes)

Uploaded Source

Built Distribution

edu_rdm_integration-0.4.1-py3-none-any.whl (90.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page