def healthcheck(): # Iniciar contador de tempo de execução da função initialTime = time.clock() # Ponto de calculo de tempo executionTime = time.clock() - initialTime # Registro de Log sendLogToES(message="Health check realizado", severity="Debug", latency=executionTime, category="healthcheck", route="/v1/cats/healthcheck") # Consultas Health Check return jsonify({ 'Banco de Dados': checkDB(), 'Rota Breeds': checkAPI('http://localhost:5000/v1/cats/breeds/all'), 'Rota Breeds Info': checkAPI('http://localhost:5000/v1/cats/breeds/info'), 'Rota Temperaments': checkAPI('http://localhost:5000/v1/cats/temperaments'), 'Rota Origins': checkAPI('http://localhost:5000/v1/cats/origins'), 'Rota Imgs': checkAPI('http://localhost:5000/v1/cats/searchimgs'), 'CPU%': psutil.cpu_percent(), 'Memory': psutil.virtual_memory() })
def checkDB(): # Iniciar contador de tempo de execução da função initialTime = time.clock() try: # Query aleatoria apenas para validar o banco customQuery("SELECT 1") # Ponto de calculo de tempo executionTime = time.clock() - initialTime # Registro de Log sendLogToES(message="Health check com o Banco de dados", severity="Info", latency=executionTime, category="healthcheck", route="background") return 'OK' # Tratamento de exception except: # Ponto de calculo de tempo errorTime = time.clock() - initialTime # Registro de Log sendLogToES( message="Erro ao efetuar health check com o banco de dados", severity="Error", latency=errorTime, category="healthcheck", route="background") return 'Down'
def page_not_found(e): # Registro de log sendLogToES(message="Tentativa de abertura de pagina incorreta. Erro 404.", severity="Error", latency=0, category="resposta", route="404") return jsonify({'message': 'Rota nao encontrada'}), 404
def searchimg(): # Iniciar contador de tempo de execução da função initialTime = time.clock() # Variaveis de campos de query string breedId = request.args.get('breedId') hashat = request.args.get('hashat') hassunglass = request.args.get('hassunglass') returnOfQuery = '' try: # Condicionais de validação das query strings # Definição de variaveis querys que serão executadas com base nas buscas if breedId is not None: returnOfQuery = queryImgById(breedId) elif hashat is not None: returnOfQuery = queryImgByHat(hashat) elif hassunglass is not None: returnOfQuery = queryImgBySunglass(hassunglass) else: return jsonify({'Mensagem': 'Efetue uma busca por imagem'}) # Verifica se o valor foi encontrado no banco if len(returnOfQuery) == 0: timeToFirstValidation = time.clock() - initialTime sendLogToES(message="Imagem não encontrada no banco de dados", severity="Debug", latency=timeToFirstValidation, category="execucao", route="/v1/cats/searchimgs") return jsonify( {'Mensagem': 'Imagem não encontrada no banco de dados.'}) else: # Salva os valores recuperados pela query // Loop para varrer todos os valores result = [] for img in returnOfQuery: result.append(dict(img)) # Ponto de calculo de tempo totalTime = time.clock() - initialTime # Registro de Log sendLogToES(message="Procura por imagem de gato realizada", severity="Info", latency=totalTime, category="execucao", route="/v1/cats/searchimgs") return jsonify(result) # Tratamento de exception except Exception: errorTime = time.clock() - initialTime sendLogToES(message="Não foi possivel efetuar a busca por imagens", severity="Error", latency=errorTime, category="execucao", route="/v1/cats/searchimgs") return jsonify({'Mensagem': 'Erro ao efetuar busca de imagem'})
def getBreeds(): # Iniciar contador de tempo de execução da função initialTime = time.clock() # Query e recuperação de valores do banco de dados queryCatBreeds = queryAllBreeds() # Registro de valores // Loop para varrer todas as raças breeds = [] for cat in sorted(queryCatBreeds): breeds.append(dict(cat)) # Ponto de calculo de tempo executionTime = time.clock() - initialTime # Registro de Log sendLogToES(message="Execucao da query para listar todas as raças", severity="Info", latency=executionTime, category="execucao", route="/v1/cats/breeds/all") return jsonify(breeds)
def getBreedByID(): # Iniciar contador de tempo de execução da função initialTime = time.clock() # Variaveis de campos de query string breedId = request.args.get('breedId') try: # Recuperação de valores do banco de dados returnOfQuery = queryBreedById(breedId) # Verifica se o valor foi encontrado no banco if len(returnOfQuery) == 0: timeOfFirstValidation = time.clock() - initialTime sendLogToES(message="Valor não encontrado no banco de dados", severity="Debug", latency=timeOfFirstValidation, category="execucao", route="/v1/cats/breeds/info") return jsonify( {'mensagem': 'Valor não encontrado no banco de dados.'}) else: # Salva os valores recuperados pela query // Loop para varrer todos os valores result = [] for cat in sorted(returnOfQuery): result.append(dict(cat)) # Ponto de calculo de tempo totalTime = time.clock() - initialTime # Registro de Log sendLogToES(message="Procura de raça de gato realizada", severity="Info", latency=totalTime, category="execucao", route="/v1/cats/breeds/info") return jsonify(result) # Tratamento de exception except Exception: errorTime = time.clock() - initialTime sendLogToES(message="Não foi possivel efetuar a busca de gatos", severity="Error", latency=errorTime, category="execucao", route="/v1/cats/breeds/info") return jsonify({'mensagem': 'Não foi possível efetuar a busca.'})
import requests import time from db import recordCatsInfo, recordImgInfo, countImg, countCatById, countImgURL from log import sendLogToES # Aguardar inicialização time.sleep(120) sendLogToES(message="Inicializacao do Invoker", severity="Debug", latency=0, category="background", route="background") # URLS para consulta de dados url = "https://api.thecatapi.com/v1/breeds" urlImg = "https://api.thecatapi.com/v1/images/search" HEADERS = {'x-api-key': 'eaa958a0-20a1-4dc4-80aa-8148be50e555'} # Consultar raças def getImgUrlFromBreedId(breedId): query = "?breed_ids=" concatQuery = urlImg + query + breedId reqImg = requests.get(concatQuery, headers=HEADERS) convertReqImg = reqImg.json() for x in convertReqImg: return x['url'] # Consultar imagens com chapeu