Beispiel #1
0
def main():
    options = parse_options()
    
    loggingLevel = logging.WARNING
    if options.verbose >= 2:
        loggingLevel = logging.DEBUG
    elif options.verbose >= 1:
        loggingLevel = logging.INFO

    # set up the logging
    logger = logging.getLogger()
    formatter = logging.Formatter('%(asctime)s [%(module)s, %(funcName)s, L%(lineno)d] %(levelname)s, %(message)s')

    logger.setLevel(loggingLevel)
    
    hdlr = logging.StreamHandler(sys.stderr)
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)
    
    hdlr = logging.handlers.RotatingFileHandler(os.path.join(os.path.dirname(thisfile), "pyclient.log"),
                                                maxBytes=1000 * 1024, backupCount=5)
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)

    if sys.platform.startswith("linux"):
        from twisted.internet.epollreactor import EPollReactor
        reactor = EPollReactor()
    elif sys.platform == 'win32':
        from twisted.internet.iocpreactor.reactor import IOCPReactor
        reactor = IOCPReactor()
    else:
        from twisted.internet.selectreactor import SelectReactor
        reactor = SelectReactor()
    
    reactor.getThreadPool().adjustPoolsize(10, 20)

    # set-up twisted to use regular python logging
    observer = log.PythonLoggingObserver()
    observer.start()

    worker = Worker(reactor)
    reactor.callLater(1, worker.loop, options)
    
    # enter twisted loop
    logging.info("starting reactor %s", type(reactor).__name__)
    reactor.run()
    logging.info("stopping reactor %s", type(reactor).__name__)

    observer.stop()