diff options
-rw-r--r-- | python2/examples/transient_file_tornado.py | 19 | ||||
-rwxr-xr-x | python2/pyinotify.py | 19 |
2 files changed, 38 insertions, 0 deletions
diff --git a/python2/examples/transient_file_tornado.py b/python2/examples/transient_file_tornado.py new file mode 100644 index 0000000..554f3cd --- /dev/null +++ b/python2/examples/transient_file_tornado.py @@ -0,0 +1,19 @@ +import pyinotify +from tornado.ioloop import IOLoop + +wm = pyinotify.WatchManager() # Watch Manager +mask = pyinotify.IN_MODIFY + +class EventHandler(pyinotify.ProcessEvent): + def process_IN_MODIFY(self, event): + # We have explicitely registered for this kind of event. + print '\t', event.pathname, ' -> written' + def process_default(self, event): + print event + +ioloop = IOLoop.instance() +notifier = pyinotify.TornadoAsyncNotifier(wm, ioloop) +#daemon.pids['nginx'] +wdd = wm.watch_transient_file('/tmp/test_file', pyinotify.IN_MODIFY, EventHandler) + +ioloop.start()
\ No newline at end of file diff --git a/python2/pyinotify.py b/python2/pyinotify.py index cd9fc94..6ca990d 100755 --- a/python2/pyinotify.py +++ b/python2/pyinotify.py @@ -1539,6 +1539,25 @@ class AsyncNotifier(asyncore.file_dispatcher, Notifier): self.read_events() self.process_events() +class TornadoAsyncNotifier(Notifier): + """ + Tornado ioloop adapter + """ + def __init__(self, watch_manager, ioloop, default_proc_fun=None, read_freq=0, + threshold=0, timeout=None, channel_map=None): + Notifier.__init__(self, watch_manager, default_proc_fun, read_freq, + threshold, timeout) + ioloop.add_handler(os.dup(self._fd), self.handle_read, ioloop.READ) + def handle_read(self,*args,**kwargs): + """ + When asyncore tells us we can read from the fd, we proceed processing + events. This method can be overridden for handling a notification + differently. + + """ + self.read_events() + self.process_events() + class Watch: """ |