Asynchronous replication framework based on Raft Algorithm for fault-tolerant distributed systems.
pip install raftos
import raftos loop.create_task( raftos.register( # node running on this machine '127.0.0.1:8000', # other servers cluster=[ '127.0.0.1:8001', '127.0.0.1:8002' ] ) ) loop.run_forever()
counter = raftos.Replicated(name='counter') data = raftos.ReplicatedDict(name='data') # value on a leader gets replicated to all followers await counter.set(42) await data.update({ 'id': 337, 'data': { 'amount': 20000, 'created_at': '7/11/16 18:45' } })
await raftos.wait_until_leader(current_node)
or
if raftos.get_leader() == current_node: # make request or respond to a client
or
raftos.configure({ 'on_leader': start, 'on_follower': stop })
Whenever the leader falls, someone takes its place.