2016-07-04 7 views
1

У меня проблемы с ошибками внутри обработчика событий из pyinotify. Я пытаюсь выполнить некоторую обработку файлов, которые были только что закрыты после записи.Ошибки прилова в pyinotify ProcessEvent

Вот упрощенная версия моего сценария:

import pyinotify 
import asyncore 

mask = pyinotify.IN_CLOSE_WRITE 

class EventHandler(pyinotify.ProcessEvent): 

    def process_IN_CLOSE_WRITE(self, event): 
     try: 
      do_stuff() 
     except BaseException as e: 
      print "Exception:" + str(e) 
      pass 

if __name__ == "__main__": 
     try: 
       wm = pyinotify.WatchManager() 

       notifier = pyinotify.AsyncNotifier(wm, EventHandler()) 
       wdd = wm.add_watch('/dir-to-watch/', mask, rec=True) 
       asyncore.loop() 
     except: 
       print "Unhandled error!" 
       print "Details:" + str(e) 
       print "Continuing anyway..." 
       pass 

Кажется, что когда я получаю сообщение об ошибке или исключение ни моего кроме в главном цикле или мой кроме BaseException в обработчике события ловят ошибку или исключения.

Я получаю сообщения, начиная, как это:

error: uncaptured python exception, closing channel (:[Errno 2] No such file or directory:

Так что мой вопрос: как мог поймать эти исключения?

ответ

0

я должен был создать пользовательский AsyncNotifier:

class CustomAsyncNotifier(pyinotify.AsyncNotifier): 
     def handle_error(self): 
       print "Handling error!" 
       print "Guru meditiation #00000025.65045338" 
       print "" 
       print "Continuing anyway..." 

, а затем изменить код, чтобы использовать его:

if __name__ == "__main__": 
     wm = pyinotify.WatchManager() 

     notifier = CustomAsyncNotifier(wm, EventHandler()) 
     wdd = wm.add_watch('/mnt/md0/proxies/', mask, rec=True) 
     asyncore.loop() 

 Смежные вопросы

  • Нет связанных вопросов^_^