Procházet zdrojové kódy

Merge branch 'master' of github.com:ask/celery

Ask Solem před 13 roky
rodič
revize
6968688e06
1 změnil soubory, kde provedl 14 přidání a 8 odebrání
  1. 14 8
      celery/worker/autoreload.py

+ 14 - 8
celery/worker/autoreload.py

@@ -148,23 +148,29 @@ class InotifyMonitor(_ProcessEvent):
         assert pyinotify
         assert pyinotify
         self._modules = modules
         self._modules = modules
         self._on_change = on_change
         self._on_change = on_change
+        self._wm = None
+        self._notifier = None
 
 
     def start(self):
     def start(self):
         try:
         try:
             self._wm = pyinotify.WatchManager()
             self._wm = pyinotify.WatchManager()
-            self._notifier = pyinotify.Notifier(self._wm)
+            self._notifier = pyinotify.Notifier(self._wm, self)
             for m in self._modules:
             for m in self._modules:
-                self._wm.add_watch(m, pyinotify.IN_MODIFY)
+                self._wm.add_watch(m, pyinotify.IN_MODIFY|pyinotify.IN_ATTRIB)
             self._notifier.loop()
             self._notifier.loop()
         finally:
         finally:
-            self.close()
+            if self._wm:
+                self._wm.close()
+                # Notifier.close is called at the end of Notifier.loop
+                self._wm = self._notifier = None
 
 
-    def close(self):
+    def stop(self):
-        self._notifier.stop()
+        pass
-        self._wm.close()
+
+    def process_(self, event):
+        self.on_change([event.path])
 
 
-    def process_IN_MODIFY(self, event):
+    process_IN_ATTRIB = process_IN_MODIFY = process_
-        self.on_change(event.pathname)
 
 
     def on_change(self, modified):
     def on_change(self, modified):
         if self._on_change:
         if self._on_change: