Skip to main content

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

Project description

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

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

На текущий момент интеграция реализуется в рамках проектов Электронный детский сад (ЭДС), Электронная школа (ЭШ) и Электронный колледж (ЭК).

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

Со стороны Минцифры предоставляется спецификация (ЕФТТ) с требованиями по формату и механизму выгрузки данных.

Выбрана модель промежуточного хранения данных на стороне продукта, которые подлежат выгрузке. При помощи такого подхода, можно обеспечить формирование не хранящихся в продукте данных и дальнейшее их обновление и удаление. Упрощается процесс поиска ошибок в данных, т.к. можно явно определить, в каких записях находятся ошибки и далее анализировать существующие данные в продуктах или функционал по формированию данных.

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

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

Модель продукта : Django-модель находящаяся в самом продукте. При помощи нее производится накапливание пользовательских данных;

Модель РВД : Django-модель находящаяся в пакете РВД продукта. Из моделей РВД формируется схема БД, позволяющая хранить данные для дальнейшей выгрузки в нормализованном виде;

Сущность РВД : Описание формата выгрузки данных в РВД в виде dataclass-а. Хранит в себе описание первичных, внешних ключей, обязательность и порядок полей.

На этапе сбора данных производится формирование данных моделей РВД на основе данных моделей продуктов. Существуют так называемые расчетные модели, для которых данные рассчитываются в процессе сбора.

Стоит обратить внимание, что сущности РВД могут содержать в себе данные из нескольких моделей РВД.

Очереди для периодических задач сборки и выгрузки данных : Важно учитывать, что с версии пакета 3.6 вводится две новые очереди и соответствущие этим очередям периодические задачи сбора и выгрузки данных. Очередь для сущности указывается в реестре "Сущности для сбора и экспорта данных" - по умолчанию все сущности относятся к основной очереди. Итого - нужно настроить три очереди для работы.

  • "Быстрая" очередь - RDM_FAST - для сущностей, по которым данные должны отдаваться каждые 5/10/15 минут по требованиям витрины. Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
  • Основная очередь (та которая была до версии 3.6) - RDM- ля всех сущностей по умолчанию. Периодическая задача - TransferLatestEntitiesDataFastPeriodicTask.
  • "Долгая" очередь - RDM_LONG - для сущностей по которым идет долгий сбор, например для расчетных сущностей. Периодическая задача - TransferLatestEntitiesDataLongPeriodicTask.

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

Для работы требуется Python >=3.9. Так же в зависимостях есть внутренние пакеты:

  • educommon;
  • function-tools;
  • m3-db-utils;
  • uploader-client.

Версии всех пакетов уточнены в файлах с зависимостями.

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

Перед внедрением пакета в проект, необходимо убедиться, что:

  • В проекте используется логирование из educommon;
  • В проект внедрен function-tools;
  • В проект внедрен m3-db-utils;
  • В проект внедрен uploader-client.

Подключение в settings.py

INSTALLED_APPS = ( ... 'edu_rdm_integration', 'edu_rdm_integration.collect_and_export_data', 'edu_rdm_integration.core.registry', 'edu_rdm_integration.rdm_entities', 'edu_rdm_integration.rdm_models', 'edu_rdm_integration.pipelines.transfer', 'edu_rdm_integration.stages.collect_data', 'edu_rdm_integration.stages.export_data', 'edu_rdm_integration.stages.service', 'edu_rdm_integration.stages.upload_data', 'edu_rdm_integration.stages.upload_data.uploader_log', 'edu_rdm_integration.stages.collect_data.registry', 'edu_rdm_integration.stages.export_data.registry', ... )

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

В разных проектах существуют различные способы добавления настроек, где-то через плагины, где-то напрямую в 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_general', 'UPLOAD_QUEUE_MAX_SIZE'): 500_000_000,
        ('rdm_general', 'RDM_MENU_ITEM'): False,
        ('rdm_transfer_task', 'MINUTE'): '0',
        ('rdm_transfer_task', 'HOUR'): '*/4',
        ('rdm_transfer_task', 'DAY_OF_WEEK'): '*',
        ('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS'): 21600,
        ('rdm_transfer_task_fast', 'MINUTE'): '*/5',
        ('rdm_transfer_task_fast', 'HOUR'): '*',
        ('rdm_transfer_task_fast', 'DAY_OF_WEEK'): '*',
        ('rdm_transfer_task_fast', 'LOCK_EXPIRE_SECONDS'): 1800,
        ('rdm_transfer_task_long', 'MINUTE'): '0',
        ('rdm_transfer_task_long', 'HOUR'): '*/6',
        ('rdm_transfer_task_long', 'DAY_OF_WEEK'): '*',
        ('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS'): 28800,
        ('rdm_upload_data_task', 'MINUTE'): '0',
        ('rdm_upload_data_task', 'HOUR'): '*/2',
        ('rdm_upload_data_task', 'DAY_OF_WEEK'): '*',
        ('rdm_upload_data_task', 'LOCK_EXPIRE_SECONDS'): 7200,
        ('rdm_upload_data_task', 'EXPORT_STAGES'): 500,
        ('rdm_upload_status_task', 'MINUTE'): '*/30',
        ('rdm_upload_status_task', 'HOUR'): '*',
        ('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
        ('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
        ('rdm_check_suspend_task', 'MINUTE'): '*/10',
        ('rdm_check_suspend_task', 'HOUR'): '*',
        ('rdm_check_suspend_task', 'DAY_OF_WEEK'): '*',
        ('rdm_check_suspend_task', 'LOCK_EXPIRE_SECONDS'): 7200,
        ('rdm_check_suspend_task', 'STAGE_TIMEOUT'): 120,
        # Настройки очереди отправки
        ('rdm_redis', 'REDIS_HOST'): 'localhost',
        ('rdm_redis', 'REDIS_PORT'): 6379,
        ('rdm_redis', 'REDIS_DB'): 1,
        ('rdm_redis', 'REDIS_PASSWORD'): '',
        ('rdm_redis', 'REDIS_CACHE_TIMEOUT_SECONDS'): 7200,
        ('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,
        ('uploader_client', 'RESPONSE_FILE_STATUS'): 'success',
        ('uploader_client', 'USE_PROXY_API'): False,
        ('uploader_client', 'USERNAME'): '',
        ('uploader_client', 'PASSWORD'): '',
        ('uploader_client', 'ORGANIZATION_OGRN'): '',
        ('uploader_client', 'INSTALLATION_NAME'): '',
        ('uploader_client', 'INSTALLATION_ID'): '',
    })  
    
  • Получение значений настроек из конфигурационного файла в settings.py:

    # Ссылка на каталог с файлами для загрузки
    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')
    
    # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified
    RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE = conf.get_int('rdm_general', 'UPDATE_NON_EXPORTED_CHUNK_SIZE')
    
    # Объем очереди файлов в витрину (в байтах) - по умолчанию 512 Мбайт
    RDM_UPLOAD_QUEUE_MAX_SIZE = conf.get_int('rdm_general', 'UPLOAD_QUEUE_MAX_SIZE')
    
    # Пункт меню "Региональная витрина данных" - Спрятать (False) / Отображать (True)
    RDM_MENU_ITEM = conf.get_bool('rdm_general', 'RDM_MENU_ITEM')
    
    # Настройка запуска периодической задачи выгрузки данных:
    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_LOCK_EXPIRE_SECONDS = conf.get('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS')
    
    # Настройка запуска периодической задачи выгрузки данных - быстрая очередь:
    RDM_FAST_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_fast', 'MINUTE')
    RDM_FAST_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_fast', 'HOUR')
    RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_fast', 'DAY_OF_WEEK')
    RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_fast', 'LOCK_EXPIRE_SECONDS')
    
    # Настройка запуска периодической задачи выгрузки данных - долгая очередь расчетных моделей:
    RDM_LONG_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task_long', 'MINUTE')
    RDM_LONG_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task_long', 'HOUR')
    RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task_long', 'DAY_OF_WEEK')
    RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_transfer_task_long', 'LOCK_EXPIRE_SECONDS')
    
    # Настройка запуска периодической задачи поиска зависших этапов экспорта:
    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_LOCK_EXPIRE_SECONDS = conf.get('rdm_check_suspend_task', 'LOCK_EXPIRE_SECONDS')
    RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT = conf.get_int('rdm_check_suspend_task', 'STAGE_TIMEOUT')
    
    # Настройка запуска периодической задачи отправки файлов с данными РВД
    RDM_UPLOAD_DATA_TASK_MINUTE = conf.get('rdm_upload_data_task', 'MINUTE')
    RDM_UPLOAD_DATA_TASK_HOUR = conf.get('rdm_upload_data_task', 'HOUR')
    RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK = conf.get('rdm_upload_data_task', 'DAY_OF_WEEK')
    RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS = conf.get_int('rdm_upload_data_task', 'LOCK_EXPIRE_SECONDS')
    # Количество подэтапов для обработки в периодической задаче отправки данных
    RDM_UPLOAD_DATA_TASK_EXPORT_STAGES = conf.get_int('rdm_upload_data_task', 'EXPORT_STAGES')
    
    # Настройка запуска периодической задачи статуса загрузки данных в витрину:
    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_UPLOAD_STATUS_TASK_EXPIRE_SECOND = conf.get('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS')
    
    # Настройка очереди Redis для формирования файлов РВД.
    RDM_REDIS_HOST = conf.get('rdm_redis', 'REDIS_HOST')
    RDM_REDIS_PORT = conf.get('rdm_redis', 'REDIS_PORT')
    RDM_REDIS_DB = conf.get('rdm_redis', 'REDIS_DB')
    RDM_REDIS_PASSWORD = conf.get('rdm_redis', 'REDIS_PASSWORD')    
    # Таймаут для сохранения параметров в общем кеш.
    RDM_REDIS_CACHE_TIMEOUT_SECONDS = conf.get_int('rdm_redis', 'REDIS_CACHE_TIMEOUT_SECONDS')
    
    # Загрузка данных в Региональную витрину данных (РВД)
    # Адрес витрины (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')
    # Установить тип ответа витрины при проверке статуса отправленного файла
    RDM_RESPONSE_FILE_STATUS = conf.get('uploader_client', 'RESPONSE_FILE_STATUS')
    # Использование Proxy API
    RDM_UPLOADER_CLIENT_USE_PROXY_API = conf.get_bool('uploader_client', 'USE_PROXY_API')
    # Имя пользователя IAM
    RDM_UPLOADER_CLIENT_USERNAME = conf.get('uploader_client', 'USERNAME')
    # Пароль пользователя IAM
    RDM_UPLOADER_CLIENT_PASSWORD = conf.get('uploader_client', 'PASSWORD')
    # ОГРН организации, в рамках которой развёрнута Витрина
    RDM_UPLOADER_CLIENT_ORGANIZATION_OGRN = conf.get('uploader_client', 'ORGANIZATION_OGRN')
    # Имя инсталляции в целевой Витрине
    RDM_UPLOADER_CLIENT_INSTALLATION_NAME = conf.get('uploader_client', 'INSTALLATION_NAME')
    # Идентификатор инсталляции в целевой Витрине
    RDM_UPLOADER_CLIENT_INSTALLATION_ID = conf.get('uploader_client', 'INSTALLATION_ID')  
    
    # Директория логов сбора данных, доступных для скачивания
    RDM_COLLECT_LOG_DIR = os.path.join('logs', 'rdm', 'collect')
    os.makedirs(os.path.join(MEDIA_ROOT, RDM_COLLECT_LOG_DIR), exist_ok=True)
    # Директория логов экспорта данных, доступных для скачивания
    RDM_EXPORT_LOG_DIR = os.path.join('logs', 'rdm', 'export')
    os.makedirs(os.path.join(MEDIA_ROOT, RDM_EXPORT_LOG_DIR), exist_ok=True)
    # Директория логов отправки данных в витрину, доступных для скачивания
    RDM_UPLOAD_LOG_DIR = os.path.join('logs', 'rdm', 'upload')
    os.makedirs(os.path.join(MEDIA_ROOT, RDM_UPLOAD_LOG_DIR), exist_ok=True)
    

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

Название настройки в settings Описание Значение по умолчанию
UPLOADS Основная директория в MEDIA, в которой будет создана директория edu_rdm_integration для сохранения файлов для дальнейшей выгрузки 500
RDM_EXPORT_ENTITY_ID_PREFIX Префикс идентификаторов записей сущностей специфический для продукта
RDM_COLLECT_CHUNK_SIZE Количество записей моделей обрабатываемых за одну итерацию сбора данных 500
RDM_EXPORT_CHUNK_SIZE Количество записей моделей обрабатываемых за одну итерацию экспорта 500
RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified 5000
RDM_UPLOAD_QUEUE_MAX_SIZE Объем очереди файлов в витрину (в байтах). 500_000_000
RDM_MENU_ITEM Отображение пункта меню Пункт меню "Региональная витрина данных" False
RDM_TRANSFER_TASK_MINUTE Настройка запуска периодической задачи выгрузки данных. Минута '0'
RDM_TRANSFER_TASK_HOUR Настройка запуска периодической задачи выгрузки данных. Час '*/4'
RDM_TRANSFER_TASK_DAY_OF_WEEK Настройка запуска периодической задачи выгрузки данных. День недели '*'
RDM_TRANSFER_TASK_LOCK_EXPIRE_SECONDS Время по истечении которого, блокировка может быть снята (в секундах) 21600
RDM_FAST_TRANSFER_TASK_MINUTE Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Минута '*/5'
RDM_FAST_TRANSFER_TASK_HOUR Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. Час '*'
RDM_FAST_TRANSFER_TASK_DAY_OF_WEEK Настройка запуска периодической задачи (быстрая очередь) выгрузки данных. День недели '*'
RDM_FAST_TRANSFER_TASK_LOCK_EXPIRE_SECONDS Время по истечении которого, блокировка может быть снята (в секундах) 1800
RDM_LONG_TRANSFER_TASK_MINUTE Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Минута 0
RDM_LONG_TRANSFER_TASK_HOUR Настройка запуска периодической задачи (долгая очередь) выгрузки данных. Час '*/6'
RDM_LONG_TRANSFER_TASK_DAY_OF_WEEK Настройка запуска периодической задачи (долгая очередь) выгрузки данных. День недели '*'
RDM_LONG_TRANSFER_TASK_LOCK_EXPIRE_SECONDS Время по истечении которого, блокировка может быть снята (в секундах) 28800
RDM_CHECK_SUSPEND_TASK_MINUTE Настройка запуска периодической задачи поиска зависших этапов экспорта. Минута */10
RDM_CHECK_SUSPEND_TASK_HOUR Настройка запуска периодической задачи поиска зависших этапов экспорта. Час *
RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK Настройка запуска периодической задачи поиска зависших этапов экспорта. День недели *
RDM_CHECK_SUSPEND_TASK_LOCK_EXPIRE_SECONDS Время по истечении которого, блокировка может быть снята (в секундах). 7200
RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT Дельта для определения зависшего подэтапа. Минута 120
RDM_UPLOAD_DATA_TASK_MINUTE Настройка запуска периодической задачи отправки файлов с данными РВД (минута). '0'
RDM_UPLOAD_DATA_TASK_HOUR Настройка запуска периодической задачи отправки файлов с данными РВД (час). '*/2'
RDM_UPLOAD_DATA_TASK_DAY_OF_WEEK Настройка запуска периодической задачи отправки файлов с данными РВД (день недели). '*'
RDM_UPLOAD_DATA_TASK_LOCK_EXPIRE_SECONDS Время по истечении которого, блокировка может быть снята (в секундах). 7200
RDM_UPLOAD_DATA_TASK_EXPORT_STAGES Количество подэтапов для обработки в периодической задаче отправки данных. 500
RDM_UPLOAD_STATUS_TASK_MINUTE Настройка запуска периодической задачи статуса загрузки данных в витрину. Минута '*/30'
RDM_UPLOAD_STATUS_TASK_HOUR Настройка запуска периодической задачи статуса загрузки данных в витрину. Час '*'
RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели '*'
RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS Время по истечении которого, блокировка может быть снята (в секундах) 3600
RDM_REDIS_HOST Настройка очереди Redis для формирования файлов РВД (хост).
RDM_REDIS_PORT Настройка очереди Redis для формирования файлов РВД (порт).
RDM_REDIS_DB Настройка очереди Redis для формирования файлов РВД (номер бд).
RDM_REDIS_PASSWORD Настройка очереди Redis для формирования файлов РВД (пароль).
RDM_REDIS_CACHE_TIMEOUT_SECONDS Таймаут для сохранения параметров в общем кеш (секунды). 7200
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_RESPONSE_FILE_STATUS Установить тип ответа витрины при проверке статуса отправленного файла 'success'
RDM_UPLOADER_CLIENT_USE_PROXY_API Использование Proxy API False
RDM_UPLOADER_CLIENT_USERNAME Имя пользователя IAM
RDM_UPLOADER_CLIENT_PASSWORD Пароль пользователя IAM
RDM_UPLOADER_CLIENT_ORGANIZATION_OGRN ОГРН организации, в рамках которой развёрнута Витрина
RDM_UPLOADER_CLIENT_INSTALLATION_NAME Имя инсталляции в целевой Витрине
RDM_UPLOADER_CLIENT_INSTALLATION_ID Идентификатор инсталляции в целевой Витрине
RDM_COLLECT_LOG_DIR Директория логов сбора данных, доступных для скачивания
RDM_EXPORT_LOG_DIR Директория логов экспорта данных, доступных для скачивания
RDM_UPLOAD_LOG_DIR Директория логов отправки данных в витрину, доступных для скачивания
  • В дефолтный конфиг проекта необходимо добавить:

    # Общие настройки интеграции с РВД
    [rmd_general]
    # Префикс идентификаторов записей сущностей специфический для продукта. Указывается в settings.py и не должен 
    # изменяться. Возможность изменения через конфигурационный файл оставлена для экстренных случаев.
    # EXPORT_ENTITY_ID_PREFIX = 
    # Количество записей моделей обрабатываемых за одну итерацию экспорта данных
    EXPORT_CHUNK_SIZE = 500
    # Количество записей моделей ЭШ обрабатываемых за одну итерацию сбора данных
    COLLECT_CHUNK_SIZE = 500
    # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified
    UPDATE_NON_EXPORTED_CHUNK_SIZE = 5000
    # Объем очереди файлов в витрину (в байтах) - по умолчанию 512 Мбайт.
    UPLOAD_QUEUE_MAX_SIZE = 500000000
    # Отображение пункта меню "Региональная витрина данных"
    RDM_MENU_ITEM = False
    
    # Настройка запуска периодической задачи выгрузки данных
    [rdm_transfer_task]
    MINUTE=*/2
    HOUR=*
    DAY_OF_WEEK=*
    LOCK_EXPIRE_SECONDS=21600
    
    [rdm_transfer_task_fast]
    MINUTE=*/2
    HOUR=*
    DAY_OF_WEEK=*
    LOCK_EXPIRE_SECONDS = 1800
    
    [rdm_transfer_task_long]
    MINUTE=*/15
    HOUR=*
    DAY_OF_WEEK=*
    LOCK_EXPIRE_SECONDS = 21600
    
    # Настройка запуска периодической задачи поиска зависших этапов экспорта
    [rdm_check_suspend_task]
    MINUTE=*/10
    HOUR=*
    DAY_OF_WEEK=*
    LOCK_EXPIRE_SECONDS=7200
    # Дельта для определения зависшего подэтапа, мин
    STAGE_TIMEOUT=120
    
    # Настройка запуска периодической задачи отправки csv-файлов в витрину.
    [rdm_upload_data_task]
    MINUTE=*/2
    HOUR=*
    DAY_OF_WEEK=*
    LOCK_EXPIRE_SECONDS = 7200
    EXPORT_STAGES = 500
    
    # Настройка запуска периодической задачи статуса загрузки данных в витрину
    [rdm_upload_status_task]
    MINUTE=*/2
    HOUR=*
    DAY_OF_WEEK=*
    LOCK_EXPIRE_SECONDS=7200
    
    # Настройка очереди Redis для формирования файлов РВД.
    [rdm_redis]
    REDIS_HOST = localhost
    REDIS_PORT = 6379
    REDIS_DB = 1
    REDIS_PASSWORD = 
    # Таймаут для сохранения параметров в общем кеш.
    REDIS_CACHE_TIMEOUT_SECONDS = 7200
    
    [uploader_client]
    # Адрес витрины
    URL = http://localhost:8090
    # Мнемоника Витрины
    DATAMART_NAME = test
    # Количество повторных попыток запроса
    REQUEST_RETRIES = 10
    # Таймаут запроса, сек
    REQUEST_TIMEOUT = 10
    # Включить эмуляцию отправки запросов
    ENABLE_REQUEST_EMULATION = True
    # Использовать Proxy API
    USE_PROXY_API = False
    # Имя пользователя IAM
    USERNAME =
    # Пароль пользователя IAM
    PASSWORD =
    # ОГРН организации, в рамках которой развёрнута Витрина
    ORGANIZATION_OGRN =
    # Имя инсталляции в целевой Витрине
    INSTALLATION_NAME =
    # Идентификатор инсталляции в целевой Витрине
    INSTALLATION_ID =
    

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

Форматирование

Форматирование исходного кода осуществляется при помощи ruff. Ниже приведены команды для осуществления форматирования.

$ ruff format src/
$ ruff check --fix --unsafe-fixes src/

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

Сборка пакета производится при помощи Job-а в Jenkins M3.build_dist.

Пакет выкладывается в глобальный PYPI и во внутренний Nexus

Документация

С документацией можно ознакомиться по ссылке http://docs.py.bars.group/edu-rdm-integration/

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

Uploaded Source

Built Distribution

edu_rdm_integration-3.10.2-py3-none-any.whl (246.2 kB view details)

Uploaded Python 3

File details

Details for the file edu_rdm_integration-3.10.2.tar.gz.

File metadata

  • Download URL: edu_rdm_integration-3.10.2.tar.gz
  • Upload date:
  • Size: 168.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.7

File hashes

Hashes for edu_rdm_integration-3.10.2.tar.gz
Algorithm Hash digest
SHA256 c8e948f0003d4aae5548145479162ccfb84fb3459eb30639c5aea18c09e9ae8f
MD5 8aabc22959c944079f1ef21293aa819b
BLAKE2b-256 5c279032b546359878d765f7f2482ab19102df994f1ee0e5b124b55734d80014

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for edu_rdm_integration-3.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5acfde28eb71c02dad9baa3dd9623c4b9bf0756eeedbb3e81534d6afa418a407
MD5 672f2a33f10d4a37b485caa995fa886d
BLAKE2b-256 b0c198e6cd2c61425f27062bedf43cacadc6503527e85924dafcc31eb3b93267

See more details on using hashes here.

Supported by

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