Есть ли возможность запросить «Длительность выполнения» запущенной запланированной задачи в Python? - PullRequest
0 голосов
/ 19 марта 2019

Мы пытаемся запросить все запланированные задачи с помощью Python. Проверьте продолжительность выполнения - и если запланированное задание выполняется дольше 5 часов, сценарий должен отправить письмо через распространителя электронной почты.

Мы уже написали функцию, которая будет отправлять почту, если вызывается функция «SendMail». В следующем фрагменте мы заменили функцию «SendMail» на Print-Statement, чтобы сосредоточиться на нашей проблеме.

Есть ли возможность запросить продолжительность выполнения запланированного задания? Планировщик заданий может отображать через «Показать все выполняемые задачи» окно, в котором отображается продолжительность выполнения.

Ссылка на изображение продолжительности прогона, мы пытаемся запросить

import win32com.client


def check_tasks():
    start = 1
    MonTask = ["all"]

    if start == 1:
        TASK_ENUM_HIDDEN = 1
        TASK_STATE = {0: 'Unknown',
                  1: 'Disabled',
                  2: 'Queued',
                  3: 'Ready',
                  4: 'Running'}

        scheduler = win32com.client.Dispatch('Schedule.Service')
        scheduler.Connect()

        longtasklist = []
        LastRun = 0
        n = 0
        folders = [scheduler.GetFolder('\\')]
        while folders:

            folder = folders.pop(0)
            folders += list(folder.GetFolders(0))
            tasks = list(folder.GetTasks(TASK_ENUM_HIDDEN))
            n += len(tasks)

            for task in tasks:
                if (task.name in MonTask) or (MonTask[0] == "all"):
                    settings = task.Definition.Settings 
                    taskname = task.name
                    taskstate = TASK_STATE[task.State]
                    if taskstate == "Running":
                        #################################
                        #if Task Run Duration > 05:00:00#
                        #################################
                            longtasklist.append(taskname)

        if len(longtasklist) > 0:
            print(longtasklist) #only for checking in the console
            MailText = "The Task/s \" %s \" exceeded the time limit" % longtasklist
            print("Send_Mail")
            #Send_Mail(MailText)

check_tasks()
...