[Twisted-Python] Looking for a simple file event driven loop using Twisted
Dave Cook
daverz at gmail.com
Sat Mar 26 02:57:07 EST 2005
Using Ken's first example, here's what I came up with:
import os
import stat
from twisted.internet import reactor
class FileWatcher:
def __init__(self, period, filename):
self.period = period
self.filename = filename
self.callbacks = []
self.mtime = os.stat(filename)[stat.ST_MTIME]
reactor.callWhenRunning(self.checkFile)
def addCallback(self, callback):
self.callbacks.append(callback)
def removeCallback(self, callback):
self.callbacks.remove(callback)
def checkFile(self):
mtime = os.stat(self.filename)[stat.ST_MTIME]
if mtime > self.mtime:
self.mtime = mtime
for callback in self.callbacks:
callback(self.filename, mtime)
reactor.callLater(self.period, self.checkFile)
if __name__=='__main__':
import time
def changed(filename, mtime):
print "%s modified at %s." % (filename, time.ctime(mtime))
open('/tmp/foo', "w").close()
FileWatcher(0.1, '/tmp/foo').addCallback(changed)
reactor.run()
Run it in one terminal window, and in the other run
touch /tmp/foo
to see what happens.
More information about the Twisted-Python
mailing list