On Fri, 25 Mar 2005 18:39:53 -0600, Ken Kinder email@example.com wrote:
It seems to me you probably will either check periodically in the reactor, like this:
def checkFile(): x = os.stat(file) ... reactor.callLater(.5, checkFile) reactor.callWhenRunning(checkFile)
Or just start another thread like this:
def wakeUp(): (action to take when file changes) def checker(): while 1: (code that waits for file to change) reactor.callFromThread(wakeUp) reactor.callInThread(checker)
The threaded version ties up an entire work thread from the pool for the lifetime of the application. Unless you only want to watch one or two files, this is probably not ideal. There's no real reason to use a thread for this at all. Polling from the main loop is a perfectly reasonable solution (and Twisted can deal with polling at much greater frequency than twice a second, if necessary).
Additionally, there are actual event notification systems for this: dnotify and inotify on Linux, for example. Twisted doesn't support these directly (although it might support inotify soon), but integrating them and other things like them is not extremely difficult.