AOP would be a quite elegant way set timeouts for functions, in my opinion. The nice thing in it is that, in principle, you can write a single timeout advice code and then wrap it over any function you want to timeout.
I wrote timeout_advice.py to demonstrate this a couple of years ago (see http://www.cs.tut.fi/~ask/aspects/aspects.html). It may not directly solve the problem at hand because it is thought to be used with a wrap_around implementation that wraps methods in classes rather than ordinary functions in modules. urllib.URLopener.open is used as an example in the code. Unfortunately, I still have not implemented the wrapping for ordinary functions, although it should be straight-forward with the same idea that is explained in the web page. Of course, in the real life, timeouts are tricky and dangerous. The consequences of interrupting a function that is not designed to be interrupted, or leaving it running in the background after the timeout (which is what timeout_advice.py does) may be surprising. -- Antti Kervinen -- http://mail.python.org/mailman/listinfo/python-list