def initialize(): """ Starts the server main loop. """ from twisted.internet import reactor from twisted.python.logfile import LogFile import os,os.path,sys # load our run-time configuration import tops.core.utility.config as config verbose = config.initialize() # use file-based logging for ourself (print statements are automatically redirected) logpath = config.getfilename('archiver','logfile') if not logpath or logpath == 'stdout': log.startLogging(sys.stdout) else: (logpath,logfile) = os.path.split(logpath) log.startLogging(LogFile(logfile,logpath)) print 'Executing',__file__,'as PID',os.getpid() try: # create an archive manager to connect our consumers to our producers manager = ArchiveManager() # initialize a TCP server to listen for local or network clients producing log messages factory = Factory() factory.protocol = ArchiveServer factory.manager = manager reactor.listenTCP(config.getint('archiver','tcp_port'),factory) reactor.listenUNIX(config.getfilename('archiver','unix_addr'),factory) # initialize an HTTP server to handle archive monitoring queries via http prepareWebServer( portNumber = config.getint('archiver','http_port'), handlers = {"feed":ArchiveQuery()}, properties = {"manager":manager}, filterLogs = True ) # fire up the reactor print 'Waiting for clients...' reactor.run() except Exception: print 'Reactor startup failed' # How do I release my unix socket cleanly here? #reactor.stop() raise