import aspects import timeout_advice import time class Example: def __init__( self ): self.all_waits = 0 def wait( self, time_to_wait, throw_exception = 0 ): myname = "Example.wait("+str(time_to_wait)+","+str(throw_exception)+")" print myname, "falls sleep." time.sleep( time_to_wait ) self.all_waits = self.all_waits + time_to_wait if throw_exception: print "Suddenly", myname, "raises exception" raise myname else: print myname, "wakes up. Total sleep:",self.all_waits return self.all_waits e = Example() adv = timeout_advice.create_timeout_advice( timeout=1.0, catch_exceptions=1 ) aspects.wrap_around( Example.wait, adv ) t = time.time() print e.wait( time_to_wait=1.6, throw_exception=1 ) print e.wait(0.2) print e.wait(0.3) print e.wait(0.4) print time.time()-t