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.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

This version

0.2.2

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.2.2.tar.gz (52.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edu_rdm_integration-0.2.2-py3-none-any.whl (78.9 kB view details)

Uploaded Python 3

File details

Details for the file edu-rdm-integration-0.2.2.tar.gz.

File metadata

  • Download URL: edu-rdm-integration-0.2.2.tar.gz
  • Upload date:
  • Size: 52.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for edu-rdm-integration-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2e7a202f4ffa4e1d35984885c3ee42618a7d39d5c5ee831832fad478f08ef53a
MD5 83b2f75d680e3df6f5a2cd75a74057be
BLAKE2b-256 bb12c9344320bf226e02265a2149615f1b0b89f6ae8e00cb5232f4566a2de4c7

See more details on using hashes here.

File details

Details for the file edu_rdm_integration-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for edu_rdm_integration-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9f98d85778c86cb7165975a13fdbb31eb219de866895f343dff236d4389fc527
MD5 26af17f3b7f53f4567f850e1542687c8
BLAKE2b-256 25cbded28f934619de62a46aa932484646c2bbf01304d228ab776e9bcb131d11

See more details on using hashes here.

Supported by

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