def _monitor(self): while not self.stop_signal: try: proc = os.waitpid(-1, 0) except OSError,err: if err.errno == 4: continue if self.stop_signal: break if os.path.exists(self.pidsdir+'/gfchild_'+str(proc[0])+'.pid'): os.remove(self.pidsdir+'/gfchild_'+str(proc[0])+'.pid') logging.debug("Child # %s died" % proc[0]) index = self.children.index(proc[0]) forked = gevent.fork() if forked == 0: setupLogging(index,debug=self.debug,directory=self.logs_dir, count=self.logs_count,max_size=self.logs_size) self.runChild(index,sockets=self.sockets) return else: file(self.pidsdir+'/gfchild_'+str(forked)+'.pid','w+').write("%s\n" % forked) self.children[index] = forked logging.debug("Created child # %s" % forked)
def _run_children(self): self.sockets = [(t,create_socket(t.split(':'),self.backlog),self.backlog) for t in self.sockets.split(',')] logging.debug("Starting server at %s " % time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())) for i in xrange(self.processes): forked = os.fork() if forked == 0: setupLogging(i,debug=self.debug,directory=self.logs_dir, count=self.logs_count,max_size=self.logs_size) self.runChild(i,sockets=self.sockets) return else: file(self.pidsdir+'/gfchild_'+str(forked)+'.pid','w+').write("%s\n" % forked) self.children.append(forked) logging.debug("Created child # %s" % forked)
def _init_logging(self): setupLogging(debug=self.debug,directory=self.logs_dir,count=self.logs_count, max_size=self.logs_size)