Как безопасно остановить сторожевого наблюдателя?
Я пытаюсь найти способ безопасно остановить мой работающий обработчик событий сторожевого таймера. Моя функция получает параметр команды, если команда должна остановить наблюдателя события сторожевого таймера, то она должна остановить событие и слушателя, пока она благополучно завершит свою задачу, что означает, что я не хочу прерывать задачу.
Буду признателен, если вы предоставите поддержку по этому вопросу.
Спасибо.
UPDATE: 1
Я пытался следовать документации библиотеки, моя реализация была такой:
observer.schedule(event_handler, this_cfg.inbound_folder_path)
observer.start()
print('Listening {} folder..........'.format(this_cfg.inbound_folder_path))
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
После этого я нашел атрибут в классе наблюдателя и изменил реализацию, как показано ниже:
observer.schedule(event_handler, this_cfg.inbound_folder_path)
observer.start()
print('Listening {} folder..........'.format(this_cfg.inbound_folder_path))
try:
while (observer.event_queue.unfinished_tasks != 0 and stop_signal!=True):
time.sleep(1)
observer.stop()
observer.join()
except KeyboardInterrupt:
observer.stop()
Что вы думаете о моем подходе? Буду признателен, если вы знаете лучшее решение. Спасибо