def _load_modules(self, conf: WhatTheFileConfiguration) -> None: module_index = 0 for module_section_name in conf.get_modules_section_names(): try: active = conf.get_property_boolean(module_section_name, "active") except: active = False if active: Log.info("Loading module: [" + module_section_name + "]") mod = self._import_module(conf, module_section_name, module_index) if mod is not None: module_index += 1 self.__modules.append(mod) Log.info("Module loaded successfully: [" + str(mod.get_index()) + "] - " + mod.get_name()) else: Log.error("Error loading module: [" + module_section_name + "]")
import json from azure.storage.blob import BlockBlobService from azure.common import AzureMissingResourceHttpError from src.utils.log import Log from enum import Enum from os import getenv log = Log() class BlobsContainers(Enum): cycles = 'cycles' models = 'models' timeline = 'timeline' paths = 'paths' class ModelType(Enum): def __str__(self): return str(self.value) user = '******' product = 'product' cnpj = 'cnpj' class BlobManager: account_name = getenv("BLOBS_NAME") account_key = getenv("BLOBS_KEY")
Adicione este script como um WebJob Triggered no Azure App Service "siga-api" com a seguinte expressão CRON: 0 0 0 * * 6 """ import os import sys sys.path.append(os.getenv("APP_ROOT")) sys.path.append(os.getenv("APP_SITEPACKAGES")) from networkx import nx from src.utils.storage.blobs import BlobManager, BlobsContainers from src.utils.log import Log log = Log() def simple_cycles(G, threshold, limit=6): """ :param G: O grafo contendo todas as transições geradas a partir do modelo :param limit: Um valor máximo de caminho. Geralmente caminhos com valores maior que 10 tem uma probabilidade muito pequena e raramente são escolhidos :param threshold: Um valor mínimo de probabilidade para caminhos. Este parâmetro evita que caminhos muito longos, ou seja, com baixa probabilidade continuem a ser buscados, reduzindo assim o tempo de execução do algoritmo :return: Um dicionário com todas os ciclos de telas e suas respectivas probabilidades """
if user is None and cnpj is None: total_product[1] += 1 d["AG"]["product"] += count_frames(doc) d["AC"]["user"] = (d["AC"]["user"] / 1.0 * total_user[0]) d["AC"]["cnpj"] = (d["AC"]["cnpj"] / 1.0 * total_cnpj[0]) d["AC"]["product"] = (d["AC"]["product"] / 1.0 * total_product[0]) d["AG"]["user"] = (d["AG"]["user"] / 1.0 * total_user[1]) d["AG"]["cnpj"] = (d["AG"]["cnpj"] / 1.0 * total_cnpj[1]) d["AG"]["product"] = (d["AG"]["product"] / 1.0 * total_product[1]) return d log = Log() if __name__ == '__main__': log.info("Started") initial_prefix = 'AC/' models, marker = BlobManager.list_all_blobs(container_name=BlobsContainers.models.value, num_results=1000, prefix=initial_prefix) documents = [] frames_AC = 0 frames_AG = 0 begin = time.time() while True: next_marker = marker for index, blob_name in enumerate(models): try:
import json import zlib from datetime import datetime from multiprocessing import Process sys.path.append(os.getenv("APP_ROOT")) sys.path.append(os.getenv("APP_SITEPACKAGES")) from src.utils.log import Log from src.utils import blobs_service as service from src.utils.storage.blobs import BlobManager from src.tasks.task1.train_model import train_model from src.webjob.check_database_size import write_on_file log = Log() def delete_documents(blobs): """ Remove todos os blobs contidos na lista :param blobs: lista com os nomes dos blobs que serão removidos :return: """ log.info("Deleting documents...") for blob in blobs: try: service.delete_entity(blob, 'timeline')
Como usar Adicione este script como um WebJob Triggered no Azure App Service "siga-api" com a seguinte expressão CRON: 0 0 2 * * * """ import os import sys sys.path.append(os.getenv("APP_ROOT")) sys.path.append(os.getenv("APP_SITEPACKAGES")) from src.utils.storage.blobs import BlobManager from src.utils.log import Log log = Log() def write_on_file(filename, lines, mode='w'): with open(filename, mode) as content_file: content_file.writelines(lines) def historic_database_size(str_sizes): """ Mantem o historico do tamanho da base de dados em bytes e em quantidade de blobs dos ultimos 30 dias. :param str_sizes: :return: """ number_of_days = 31
import datetime from src.ml.models.markov import markov_chain from copy import deepcopy as copy from src.utils import blobs_service as service from src.utils.log import Log from operator import itemgetter log_app = Log() def train_model(user_sessions_data): """ Utiliza cada sequência de telas de uma seção de um usuário por vez para treinar os modelos :param user_sessions_data: Dados contendo as sequências de telas das seções dos usuários :return: """ for user_data in user_sessions_data: data = get_activate_data(user_data) if data: train_product(data) def train_product(product_data): """ Treina o modelo do produto a partir do modelo atualizado do usuário :param product_data: sequências de telas de uma seção de um usuários :return: