Fault-tolerance framework Py-Fate contains several proxy classes and/or algorithms so that a conscious developer can easily add fault-tolerance to the code.
http://sourceforge.net/projects/py-fate/ The biggest point is that Python proxying capabilities allow for invisible drop-in addition or revocation of fault tolerance. Using Py-Fate you can turn any callable into a syntactically identical callable with fault-tolerant twist, for example: --------------------------------------------------- "Sequential" fault-tolerance through repetition: def foo(...): ... foo(...) # regular foo call foo = ft_retry(ft_sync(foo), 3) foo(...) # now foo gets retried up to 3 times in case it throws foo = ft_retry(ft_async(foo, 10.0), 3) foo(...) # same but each retry of foo also times out in 10 seconds foo = ft_retry_backoff(ft_async(foo, 10.0), 1.0, 3) foo(...) # same but exponentially increasing sleep is inserted between the retries, exactly 1, 2, and 4 seconds in this example --------------------------------------------------- "Parallel" fault-tolerance through simultaneous execution of multiple variants of the same code: def foo1(...): ... def foo2(...): # has the same signature as foo1 ... foo = ft_par_1st(ft_succeeded, ft_sync(foo1), ft_sync(foo2)) foo(...) # runs foo1 and foo2 in parallel and whichever returns first and manages not to throw wins def foo3(...): # has the same signature as both the other foo's ... foo = ft_par(ft_majority_voter(), ft_sync(foo1), sync(foo2), sync(foo3)) foo(...) # runs all three in parallel and performs majority voting on the results foo = ft_par_tb(ft_equal_comparator(), ft_sync(foo1), sync(foo2), sync(foo3)) foo(...) # similar to the previous but doesn't wait for all the foo's to return as soon as there is enough identical votes Obviously, there is a handful other templates and more details, please see the module documentation. --------------------------------------------------- Please download Py-Fate here: http://sourceforge.net/projects/py-fate/ -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
