1

Je crée un logiciel qui détecte si un nouveau fichier est téléchargé dans le stockage de compartiment de Google Cloud Platform à partir d'une instance de machine virtuelle. Un répertoire de fichier nommé images a été monté sur le seau à l'aide Cloud Storage Fuse par cette commandeDétection des modifications de fichiers dans un répertoire synchronisé avec un stockage cloud externe dans Ubuntu 16.04 LTS

gcsfuse cloud-storage-bucket ~/mystuff/images 

Chaque fois qu'un fichier est téléchargé dans le stockage du godet, le fichier apparaît également dans le répertoire des images. J'utilise package Python chien de garde pour détecter si un nouveau fichier est créé

# -*- coding: utf-8 -*- 
#!/bin/bash 
import time 
import TextDetector 
from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 

DIR="~/mystuff/images" 

class ExampleHandler(FileSystemEventHandler): 
    def on_created(self, event): # when file is created 
     # do something, eg. call your function to process the image  
     print("Got event for file %s" % event.src_path) 
     TextDetector.detect_text(event.src_path) 

observer = Observer() 
event_handler = ExampleHandler() # create event handler 
# set observer to use created handler in directory 
observer.schedule(event_handler, path=DIR) 
observer.start() 

# sleep until keyboard interrupt, then stop + rejoin the observer 
try: 
    while True: 
     time.sleep(1) 
except KeyboardInterrupt: 
    observer.stop() 

observer.join() 

Le problème est le chien de garde n'a pas détecté quoi que ce soit, même quand il y a un nouveau fichier créé dans le répertoire d'images chaque fois que je téléchargé quelque chose dans le seau espace de rangement. J'ai aussi essayé d'utiliser inotify mais le résultat est également le même. Le code s'exécute sans aucun problème lorsque j'ai essayé localement dans la plate-forme Windows. Je suis vraiment nouveau à Ubuntu. Quelqu'un pourrait-il m'aider à résoudre ce problème?

Répondre

1

Vous pouvez examiner les options suivantes:

Je conseillerais contre la construction au-dessus du connecteur FUSE et utiliser natif fonctionnalité fournie par la plate-forme.

+0

Nous vous remercions de votre suggestion. Je suis assez nouveau sur cette plate-forme donc beaucoup de fonctionnalités que je ne connais pas encore. Je vais essayer d'explorer plus d'options. –