Qlik Sense üzeriden, python kullanarak belirli bir süreden fazladır çalışan taskları HTML tablo olarak alabiliriz.
# -*- coding: utf-8 -*-
import qsAPI
from datetime import datetime, timedelta
import sys
import io
from datetime import datetime
from tabulate import tabulate
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
def bordered_html_table(html_data,headers):
add_border_to_html = "<table border=\"1\">"
html_table = tabulate(html_data, headers, tablefmt="html")
html_table = html_table.replace("<table>", add_border_to_html)
return html_table
def connectQliksense(proxy, domain, user, passwd):
qlik_conn = qsAPI.QRS(proxy=proxy, user=(domain, user, passwd), verbosity='CRITICAL')
return qlik_conn
def convert_qmc_status(status):
if status == 2:
status_string = "Started"
elif status == 3:
status_string = "Queued"
elif status == 7:
status_string = "Success"
elif status == 8:
status_string = "Failed"
else:
status_string = status
return status_string
# take third element for sort
def sort_list(elem):
return elem[4]
# qliksense connection variables
proxy_qliksense_tr = "PROXY_MACHINE"
domain_qliksense_tr = "DOMAIN"
user_qliksense_tr = "USERNAME"
passwd_qliksense_tr = "PASSWORD"
# connect to qliksense
qliksense_conn = connectQliksense(proxy_qliksense_tr, domain_qliksense_tr, user_qliksense_tr, passwd_qliksense_tr)
# get app list
tasks = qliksense_conn.TaskGet()
task_html = list()
for task in tasks:
task_list = list()
# print(task)
start_time = datetime.strptime(task['operational']['lastExecutionResult']['startTime'][:-5],
'%Y-%m-%dT%H:%M:%S') + timedelta(hours=3)
task_run_time = datetime.now() - start_time
# check if task is running and bigger than specified time
if task['operational']['lastExecutionResult']['status'] == 2 and task_run_time > timedelta(minutes=30):
task_list.append(task['name'])
if "app" in task:
task_list.append(task['app']['stream']['name'])
else:
task_list.append("No Stream")
task_list.append(task['operational']['lastExecutionResult']['executingNodeName'])
task_list.append(convert_qmc_status(task['operational']['lastExecutionResult']['status']))
task_list.append(start_time)
task_list.append(task['operational']['lastExecutionResult']['stopTime'])
task_list.append(task_run_time)
task_html.append(task_list)
if len(task_html) == 0:
print(None)
else:
# create headers for list
headers = ["Task Name", "Stream Name", "Executing Node Name", "Status", "Start Time", "Task Run Time"]
# sort list
task_html.sort(reverse=True, key=sort_list)
# create html table for list
table = bordered_html_table(task_html, headers)
print(table)