Как сделать сценарий мониторинга общего пути для создания оповещения по электронной почте Outlook, если через 20 минут в пути сегмента не появляется движение?

Привет!! Я пытаюсь использовать приведенный ниже модуль сторожевого таймера для мониторинга общего пути, который отлично работает, но я не понимаю генерировать оповещение по электронной почте Outlook через 20 минут, если нет модификация или обновление, происходящее с указанным путем. Ниже приведен код:

import os
import sys
import time
import logging

from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s - %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')
    os.system('//fleet.ad/data/Data4/VMSSHARE/its/DOCS')


    print("found")
    # Defining your own path
    path = "//bleet.ad/data/Data4/VMSSHARE/its/DOCS"
    print("found")


    # Initilaize logging event handler
    event_handler = LoggingEventHandler()

    # Initialize Observer
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)

    # Start the observer
    observer.start()
    
    try:
        while True:
            # set the thread sleep time
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

Тем не менее, попробовал этот фрагмент кода для получения уведомлений по электронной почте Outlook, но не уверен, как заставить его работать с приведенным выше сценарием:

import os
import smtplib
import requests

EMAIL_ADDRESS = os.environ.get('USER_ID')
EMAIL_PASSWORD = os.environ.get('USER_PASSWORD')

r = requests.get("https://fleet.my.salesforce.com", timeout=5)

#if r.status_code!= 200:
with smtplib.SMTP('smtp.office365.com', 587) as smtp:
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)

    subject = 'ALARM: MAPILab is stuck from copying Public folders to destination'
    body = 'Make sure server is restarted and it is backed up'
    msg = f'Subject:{subject}\n\n{body}'

    smtp.sendmail(EMAIL_ADDRESS, '[email protected]', msg)

Вызов для меня это:

r = requests.get("https://fleet.my.salesforce.com", timeout=5)

Вместо монитора веб-сайта, как я должен искать вывод кода?

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

MaxPowers 22.12.2020 09:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
127
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны прикрепить методы к обработчику событий, например:

my_event_handler.on_created = on_created
my_event_handler.on_deleted = on_deleted
my_event_handler.on_modified = on_modified
my_event_handler.on_moved = on_moved

где методы выглядят так:

def on_created(event):
     print(f"{event.src_path} has been created!")

как описано в этом сообщении в блоге: http://thepythoncorner.com/dev/how-to-create-a-watchdog-in-python-to-look-for-filesystem-changes/

Пусть ваши обработчики обновляют переменную временной метки last_changed всякий раз, когда происходят изменения. (Поскольку все ваши обработчики делают одно и то же, независимо от того, что было изменено, вы могли бы просто определить один метод обработчика, возможно, вызвать его on_any_change и присоединить ко всем 4 методам обработчика. что есть метод on_any_event, так что вы можете просто подключиться к нему.)

Затем в вашем цикле while True, если текущее время - last_changed больше вашего порога, отправьте электронное письмо.

это было действительно полезно понять. Помогите, пожалуйста, с циклом while. Я не понимаю, как установить это условие. И очень ценю вашу помощь. Спасибо

ruchi yadav 07.01.2021 08:16

Другие вопросы по теме