ファイルの変更を追跡し、変更があった場合にサーバーを更新する、Dropbox に似たファイル ウォッチャーを作成しようとしています。残念ながら、私が使用している Watchdog の fileSystemHandler の実装では、ファイルの削除を検出できません。ここにオブザーバーコードがあります
class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
message = dict()
try:
index = event.src_path.index('onedir')
message['filename'] = str(event.src_path[index+7:])
except:
print "NoneType error, could not update"
message['timestamp'] = str(datetime.datetime.now())
message['username'] = str(self.username)
message['password'] = str(self.password)
messageStr = json.dumps(message)
print messageStr
print event.event_type
urlExtension = ""
if event.event_type == "created":
urlExtension = '/userfile/newfile'
elif event.event_type == 'modified':
urlExtension = '/userfile/updatefile'
elif event.event_type == 'deleted':
urlExtension = '/userfile/deletefile'
else:
return
self.sendJson(urlExtension, message)
そして、ここに FileSystemHandler を開始するコードがあります
def run(self):
event_handler = MyHandler()
event_handler.username = self.username
event_handler.password = self.password
self.observer.schedule(event_handler, self.path, recursive=True)
self.observer.start()