def __init__(self): self.role = MasterService.RL_ALONE # Current role of this node self.state = MasterService.ST_NORMAL # Current cluster error status self.master = None # Name of the active master self.masterLastSeen = 0 # Timestamp for master failover self.status = dict() # Whole cluster status self.localNode = Node(DNSCache.getInstance().name) self.disk = DiskHeartbeat() self.s_slaveHb = SlaveHearbeatService(self) self.s_masterHb = MasterHeartbeatService(self) self.s_rpc = RPCService(self) # Watchdogs for failover self.l_slaveDog = task.LoopingCall(self.checkMasterHeartbeat) self.l_masterDog = task.LoopingCall(self.checkSlaveHeartbeats) # Election Stuff self.ballotBox = None # All received votes self.currentElection = None # Election name, none if no pending election self.f_tally = None # IDelayedCall used to trigger countVotes() self.lastTallyDate = 0 # Timestamp for debbuging elections self.panicRequested = False # True if panic is requested during election
#!/usr/bin/env python import logging from google.appengine.ext import webapp from google.appengine.ext.webapp import util import handlers from rpc import RPCService from namespaces import * RPCService([("info", info.InfoNamespace), ("person", person.PersonNamespace), ("session", session.SessionNamespace)]) application = webapp.WSGIApplication( [('/', handlers.MainHandler), ('/test', handlers.RPCFormHandler), (r'/rpc/([a-zA-Z]+)/([a-zA-Z]+)', handlers.RPCHandler)], debug=True) def main(): util.run_wsgi_app(application) if __name__ == '__main__': main()