gpt4 book ai didi

Python看门狗: ignoring duplicate events

转载 作者:行者123 更新时间:2023-12-01 08:49:25 26 4
gpt4 key购买 nike

我正在尝试设置看门狗,以便可以监视 JavaScript 文件的更改。但是,当修改单个文件时,您总是会收到重复的事件。

我想对其进行设置,以便在修改文件时它会查看事件发生的时间,如果它与前一个事件是同一秒,则它不会执行任何操作。这样它就可以忽略重复的事件。有没有办法实现这一点并且始终将前一个事件的时间存储在变量中?

import time
from os import path
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler


class MyHandler(FileSystemEventHandler):
def on_modified(self, event):
print(time.ctime(), f'path : {event.src_path}')


if __name__ == "__main__":
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path=path.join(path.dirname(__file__), 'static/js'), recursive=False)
observer.start()

try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()

最佳答案

一种简单的方法是将文件/日期存储在字典中,然后在处理事件之前检查时间/文件源是否在字典中。

class MyHandler(FileSystemEventHandler):
file_cache = {}

def on_modified(self, event):
seconds = int(time.time())
key = (seconds, event.src_path)
if key in self.file_cache:
return
self.file_cache[key] = True
# Process the file

如果您担心事件数量,您可以尝试使用 cachetools缓存结果,使字典保持较小。

关于Python看门狗: ignoring duplicate events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com