def deadHost(self, s_id, reason=''): t,host = self.open[s_id] if host in self.hosts: pdlogging.log("marking host %s down (%s)\n"%(str(host), reason), datestamp=1) self.hosts.remove(host) if host in self.openconns: del self.openconns[host] if host in self.totalconns: del self.totalconns[host] self.badhosts[host] = (time(), reason) # make sure we also mark this session as done. self.doneHost(s_id)
def clientConnectionFailed(self, connector, reason): #print "bzzt. we failed,", connector, reason # this would hang up the inbound. We don't want that. #self.receiver.transport.loseConnection() self.receiver.factory.scheduler.deadHost(self, reason) next = self.receiver.factory.scheduler.getHost(self, self.receiver.client_addr) if next: pdlogging.log("retrying with %s\n"%repr(next), datestamp=1) host, port = next reactor.connectTCP(host, port, self) else: # No working servers!? pdlogging.log("no working servers, manager -> aggressive\n", datestamp=1) self.receiver.transport.loseConnection()
def checkBadHosts(self, scheduler): import time forcecheck=0 badhosts = scheduler.badhosts hosts = badhosts.keys() if not len(scheduler.hosts): # All servers are down! Go into a more aggressive mode for # checking. forcecheck=1 for bh in hosts: now = time.time() when,what = badhosts[bh] if forcecheck or (now > when + self.checktime): pdlogging.log("re-adding %s automatically\n"%str(bh), datestamp=1) name = scheduler.getHostNames()[bh] del badhosts[bh] scheduler.newHost(bh, name)
import pdlogging try: import twisted from pdnetworktwisted import * except ImportError: pdlogging.log("no twisted available - falling back to asyncore") from pdnetworkasyncore import *
def dataReceived(self, data): #print "client data", len(data) if self.receiver is None: pdlogging.log("client got data, no receiver, tho\n", datestamp=1) else: self.receiver.transport.write(data)