Как выполнить скрипт один раз в Python - PullRequest
0 голосов
/ 02 июля 2018

У меня следующий код Python, и я хочу выполнить ServiceRestart только один раз.

В настоящее время я настроил четыре ошибки, которые мой следующий скрипт получит из файла JSON и отправит оповещения по электронной почте, но, поскольку я добавил перезапуск службы в else , он перезапустит службу 4 раза, если эти 4 ошибки найдены одновременно.

Я хочу запустить serviceRestart только один раз.

        # Logic to read the result file and send email
    if self.flag:
        fn = open(result_file_name, 'r+')
        result_data = fn.read()
        self.logger.info('Calling send email method')
        self.logger.info(result_data)
        if(((day == 'Saturday') and (hr >= '06' and hr <'12')) or (day == 
        'Sunday')):
            print('Mail will not go')
        else:                
            self.email_util.send_email(result_data)
            serviceName = "raha-connector"
            win32serviceutil.RestartService(serviceName) //this i want to execute once
            result_data = 'Connector started successfully'
            self.email_util.send_email(result_data)
            self.logger.info('Match found, hence send email method called')
            self.logger.info('End of search_file method : file_name -%s, 
            criteria - %s, last scanned row - %s',
            file_name, criteria, last_scanned_row)

Я пытался использовать счетчик, но он не работает. Я пробовал даже с циклом, это не сработало.

Пожалуйста, предоставьте несколько методов для выполнения serviceRestart только один раз, независимо от ошибки.

Спасибо.

1 Ответ

0 голосов
/ 02 июля 2018

Используйте для этого логическое значение.

has_restarted = False
 # Logic to read the result file and send email
    if self.flag:
        fn = open(result_file_name, 'r+')
        result_data = fn.read()
        self.logger.info('Calling send email method')
        self.logger.info(result_data)
        if(((day == 'Saturday') and (hr >= '06' and hr <'12')) or (day == 
        'Sunday')):
            print('Mail will not go')
        else:                
            self.email_util.send_email(result_data)
            serviceName = "raha-connector"
            if not has_restarted:
                win32serviceutil.RestartService(serviceName) //this i want to execute once
                has_restarted = True
            result_data = 'Connector started successfully'
            self.email_util.send_email(result_data)
            self.logger.info('Match found, hence send email method called')
            self.logger.info('End of search_file method : file_name -%s, 
            criteria - %s, last scanned row - %s',
            file_name, criteria, last_scanned_row)

У вас есть логическое значение has_restarted, равное False при запуске. Как только вы используете функцию перезапуска в добавленном мной операторе if, has_restarted становится True, поэтому он никогда не пропустит оператор if, и перезапуск не будет выполнен.

...