Интеграция с Региональной витриной данных
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') # Настройка запуска периодической задачи поиска зависших этапов экспорта: RDM_CHECK_SUSPEND_TASK_MINUTE = conf.get('rdm_check_suspend_task', 'MINUTE') RDM_CHECK_SUSPEND_TASK_HOUR = conf.get('rdm_check_suspend_task', 'HOUR') RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK = conf.get('rdm_check_suspend_task', 'DAY_OF_WEEK') RDM_CHECK_SUSPEND_TASK_TIMEDELTA = conf.get_int('rdm_check_suspend_task', 'TIMEDELTA') # Загрузка данных в Региональную витрину данных (РВД) # Адрес витрины (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=*
# Настройка запуска периодической задачи поиска зависших этапов экспорта
[rdm_check_suspend_task]
MINUTE=*/10
HOUR=*
DAY_OF_WEEK=*
# Дельта для определения зависшего подэтапа, мин
STAGE_TIMEOUT=120
[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 | Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели | '*' |
RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT | Дельта для определения зависшего подэтапа. Минута | 120 |
Сборка и распространение
Инструкция для разработчика
Настройка PyCharm для работы
Запуск в системе
Запуск в контейнере
Правила внесения изменений
История изменений
Все изменения проекта должны быть отражены в этом файле.
Формат основан на Keep a Changelog и проект следует Семантическому версионированию.
[x.y.z] - гггг-мм-дд
Здесь должно быть расширенное описание того, что было сделано, какие есть планы у команды по дальнейшему развитию. Желательно будущие цели привязывать к конкретным задачам. Т.е. на каждую цель нужно поставить отдельную задачу и отразить ее номер здесь.
Добавлено
-
ПРОЕКТ-ZZZZ PATCH Название задачи или изменения.
-
ПРОЕКТ-YYYY MINOR Название задачи или изменения.
-
ПРОЕКТ-XXXX MAJOR Название задачи или изменения.
Изменено
Исправлено
Удалено
[0.6.1] - 2023-10-02
Дополнение поведения BaseExportDataFunctionHelper.
Изменено
- EDUSCHL-20535 PATCH - В логике BaseExportDataFunctionHelper добавлена очистка строковых полей от управляющих символов.
[0.6.0] - 2023-09-29
Добавлена функция set_failed_status_suspended_exporting_data_stages для определения и перевода зависших этапов/подэтапов экспорта в статус (FAILED). Добавлена функция set_failed_status_suspended_collecting_data_stages для определения и перевода зависших этапов/подэтапов сбора в статус (FAILED).
Добавлено
-
EDUSCHL-20487 MINOR Добавлена функция
set_failed_status_suspended_exporting_data_stages
. -
EDUSCHL-20487 MINOR Добавлена функция
set_failed_status_suspended_collecting_data_stages
.
[0.5.9] - 2023-09-25
Повышена версия wheel
Изменено
- EDUCLLG-7939 PATCH - Повышена версия wheel
[0.5.8] - 2023-09-13
Исправлена ошибка добавления в описание асинхронной задачи списка выгруженных сущностей BaseExportLatestEntitiesData._set_description_to_async_task.
Исправлено
- EDUSCHL-20334 PATCH - Баг с обновлением поля description в BaseExportLatestEntitiesData._set_description_to_async_task.
[0.5.7] - 2023-09-12
Баг фикс и дополнение поведения BaseExportLatestEntitiesData.
Изменено
- EDUSCHL-20435 PATCH - BaseExportLatestEntitiesData теперь поддерживает выгрузку ни разу невыгруженных сущностей.
Исправлено
- EDUSCHL-20435 PATCH - Баг с условием в фильтре в BaseExportLatestEntitiesData._update_model_modified_field.
[0.5.6] - 2023-09-06
Доработаны классы BaseExportLatestEntitiesData и BaseExportEntitiesData.
Исправлено
- EDUSCHL-20435 PATCH - Исправлено нахождение левой границы в классе ExportLatestEntitiesData; - Добавлена проверка на наличие запущенных или готовых к выгрузке сущностей; - Добавлен параметр update_modified, который обновляет поле modified у собранных моделей, чтобы выгрузить невыгруженные записи.
[0.5.5] - 2023-09-04
Добавление pip в зависимости сборки пакета.
Добавлено
- EDUSCHL-19919 PATCH Добавление pip в зависимости сборки пакета.
[0.5.4] - 2023-09-04
split_by_days_count переименовал в split_by_quantity.
Изменено
- EDUSCHL-20302 PATCH split_by_days_count переименовал в split_by_quantity.
[0.5.3] - 2023-09-03
Изменены параметры формирования подпериодов в generate_first_collect_models_data_script.
Изменено
- EDUSCHL-20302 PATCH Изменены параметры формирования подпериодов в generate_first_collect_models_data_script.
[0.5.2] - 2023-08-28
Замена базового класса функций.
Изменено
- EDUSCHL-20344 PATCH Замена базового класса функций на WebEduLazySavingPredefinedQueueFunction.
[0.5.1] - 2023-08-22
Для BaseFirstCollectModelsDataCommandsGenerator добавлено условие - если не заполнен creating_trigger_models, то словарь с данными для команды не передается.
Исправлено
-
EDUSCHL-20227 PATCH Если у сущности не заполнен creating_trigger_models, то в генераторе BaseFirstCollectModelsDataCommandsGenerator не формируется словарь с параметрами для команды.
-
EDUSCHL-20229 PATCH Если у сущности не заполнен creating_trigger_models, то в генераторе BaseFirstCollectModelsDataCommandsGenerator не формируется словарь с параметрами для команды.
[0.5.0] - 2023-08-19
Дополнительная функциональность WebEduEntityValueCache была перенесена в EntityCache в function_tools.
Удалено
-
EDUSCHL-20277 MINOR Удален WebEduEntityValueCache.
-
EDUSCHL-20277 MINOR Удален WebEduEntityCacheExtended.
[0.4.7] - 2023-08-17
Изменено формирование очередности сбора/экспорта моделей/сущностей. Вместо отдельных перечислений используется существующее поле order_number
модели-перечисления TitledModelEnum
. В случае, когда order_number
не указан, т.е. будет использоваться значение по умолчанию DEFAULT_ORDER_NUMBER
, модель/сущность будет исключена из сбора/экспорта.
Изменено
- EDUSCHL-19164 MINOR Изменено формирование очередности сбора/экспорта моделей/сущностей.
[0.4.6] - 2023-08-16
Удален лишний вызов метода _prepare_logs
Исправлено
- EDUSCHL-19991
PATCH удален лишний вызов метода
_prepare_logs
в методе__init__
классаBaseCollectingCalculatedExportedDataFunctionCacheStorage
[0.4.5] - 2023-08-09
Объединение обрабатываемых логов относящихся к одному объекту
Добавлено
- EDUSCHL-19991
PATCH Новый миксин
ReformatLogsMixin
, новое поле is_merge_logs и новый метод _merge_logs у классаBaseCollectingExportedDataFunctionCacheStorage
[0.4.4] - 2023-08-12
Исправлен баг с timedelta
Исправлено
- EDUSCHL-20200 PATCH Исправлен баг с timedelta.
[0.4.3] - 2023-08-12
Исправлен баг с timedelta
Исправлено
- EDUSCHL-20200 PATCH Исправлен баг с timedelta.
[0.4.2] - 2023-08-11
Исправление ошибки учета миллисекунд, при генерации скриптов сбора и выгрузки данных. В текущий момент chunk_size все равно работает некорректно. Это связано с тем, что при обнулении миллисекунд за одной записью выборки может скрываться большое количество, например, которые были созданы или обновлены скриптами. Проблему необходимо решить в будущем, но текущего решения хватает для эксплуатации. В выборках моделей и логов не должна входить правая граница периода выборки.
Исправлено
-
EDUSCHL-20235 PATCH Исправлена ошибка учета миллисекунд в выборках при генерации скриптов с командами для сбора и выгрузки данных.
-
EDUSCHL-20235 PATCH В выборках моделей и логов не должна входить правая граница периода выборки.
[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
Built Distribution
Hashes for edu-rdm-integration-0.6.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f784beed96551bd23555e5d218f17f3d82f342557f1a0863deed47e279c8d65f |
|
MD5 | 29bb5b60277cb0bd1c5073bbade286c2 |
|
BLAKE2b-256 | 744efe3aa7f0b8af7597e42aa9b57f22c0ec6d7a4fb3768a0935968a163dbba7 |
Hashes for edu_rdm_integration-0.6.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee8d57d60cda64fac089c1df4b60989404bc0b49d5a5706f85c6e4ab2f93fd8e |
|
MD5 | c5b0755e2d3717b62e109710ff9a3e00 |
|
BLAKE2b-256 | 783f2aecf82ec3fdf457dc6eec35caf7f396fc7b63d001e68a72c5dd23dafc3b |