def initialize(): """ Starts the server main loop. """ from twisted.internet import reactor from twisted.python.logfile import LogFile import sys import os,os.path # 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('logger','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 a record buffer to connect our feed watchers to our clients feed = FeedBuffer() # initialize socket servers to listen for local and network log message producers factory = Factory() factory.protocol = LogServer factory.feed = feed reactor.listenTCP(config.getint('logger','tcp_port'),factory) reactor.listenUNIX(config.getfilename('logger','unix_addr'),factory) # initialize an HTTP server to handle feed watcher requests via http prepareWebServer( portNumber = config.getint('logger','http_port'), handlers = {"feed":FeedUpdate()}, properties = {"feed":feed}, 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