Blocking code

Peter Otten __peter__ at
Fri Jan 15 20:16:55 CET 2010

eric.frederich wrote:

> I am trying to write something that will watch directories without
> poling them.
> This is what FAM is fore.  Gamin is a re-implementation of FAM and it
> has python bindings.
> The problem is that when I call handle_one_event() it blocks until
> there is an event to handle.

What's the purpose of mon.event_pending()? Can you use it to check whether 
an event is due? Example:

import gamin
import sys
import time

directory = sys.argv[1]

def callback(path, event):
    print "Got callback: %s, %s" % (path, event)

mon = gamin.WatchMonitor()
mon.watch_directory(directory, callback)

while True:
    if mon.event_pending():

I didn't find anything that deserves to be called documentation, but a quick 
test suggests that this at least responds to Ctrl-C:

$ mkdir alpha
$ python alpha/ &
[1] 9932
$ Got callback: /home/petto/srcx/clpy/alpha, 8
Got callback: /home/petto/srcx/clpy/alpha, 9
touch alpha/beta
$ Got callback: beta, 5
Got callback: beta, 1
mkdir alpha/gamma
$ Got callback: gamma, 5
python alpha/
^CTraceback (most recent call last):
  File "", line 19, in <module>


More information about the Python-list mailing list