Через время закрывается программа, выполняется бесконечный цикл

Программа в бесконечном цикле проверят соответствует ли текущее время указанной в документе .csv, если да то выполняется команда открытия ссылки. Точно так же если наступило время завершения что указанно в документе .csv, то браузер закрывается. Я собрал через pyinstaller .exe программу, она работает около часа и после закрывается. Прошу помогите понять, что может быть причиной. Тут ссылка на nama.csv

def CSV_time():#Из CSV файла переменные получают время
while True:

    day = datetime.datetime.today().strftime("%d.%m.%Y")  # Получает текущую дату, месяц и год

    with open("nama.csv", newline='') as csvfile:
        reader = csv.DictReader(csvfile, delimiter=";")
        for row in reader:
            if row['data'] == day:  # Если в списке есть такая дата
                time_namaz1 = row['time1_off']
                time_namaz2 = row['time2_off']
                time_namaz3 = row['time3_off']
                time_namaz4 = row['time4_off']

                time_radio1 = row['time1_on']
                time_radio2 = row['time2_on']
                time_radio3 = row['time3_on']
                time_radio4 = row['time4_on']

                TIME_on = row['time_on']
                TIME_off = row['time_off']

                while True:

                    TIME = datetime.datetime.today().strftime("%H:%M:%S")

                    if TIME == TIME_on:  # on
                        if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            webbrowser.open('https://www.govoritmaykop.ru', new=0)
                        time.sleep(1)
                    if TIME == time_namaz1:  # off
                        os.system('taskkill /IM msedge.exe /F')
                        time.sleep(1)
                    if TIME == time_radio1:  # on
                        if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            webbrowser.open('https://www.govoritmaykop.ru', new=0)
                        time.sleep(1)
                    if TIME == time_namaz2:  # off
                        os.system('taskkill /IM msedge.exe /F')
                        time.sleep(1)
                    if TIME == time_radio2:  # on
                        if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            webbrowser.open('https://www.govoritmaykop.ru', new=0)
                        time.sleep(1)
                    if TIME == time_namaz3:  # off
                        os.system('taskkill /IM msedge.exe /F')
                        time.sleep(1)
                    if TIME == time_radio3:  # on
                        if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            webbrowser.open('https://www.govoritmaykop.ru', new=0)
                        time.sleep(1)
                    if TIME == time_namaz4:  # off
                        os.system('taskkill /IM msedge.exe /F')
                        time.sleep(1)
                    if TIME == time_radio4:  # on
                        if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            webbrowser.open('https://www.govoritmaykop.ru', new=0)
                        time.sleep(1)
                    if TIME > TIME_on and TIME < time_namaz1:
                        if not "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            webbrowser.open('https://www.govoritmaykop.ru', new=0)
                    if TIME == TIME_off or TIME > TIME_off:
                        if "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            os.system('taskkill /IM msedge.exe /F')
                    if TIME < TIME_on:
                        if "msedge.exe" in (p.name() for p in psutil.process_iter()):
                            os.system('taskkill /IM msedge.exe /F')
                    else:
                        break # Выход из цикла для обновления даты

Ответы (1 шт):

Автор решения: Азамат Джан

Ошибку вызывал PID программы msedge.exe:

psutil.NoSuchProcess: process no longer exists (pid=ххххх)

Нашел тему с подобной ошибкой, что очень помогло. 63 и 66-ю строку заменил на упакованную функцию

def TRACK_ON_AND_OFF():
try:
    if "msedge.exe" in (p.name() for p in psutil.process_iter()):
        os.system('taskkill /IM msedge.exe /F')
    else:
        pass
except psutil.NoSuchProcess:
    pass

PS Новичкам, чтобы найти ошибку самозавершения можно просто запустив скрипт через CMD или любой другой интерпретатор(вот только pycharm не давал ошибок, там все работало как часы).

→ Ссылка