def start(self): # logging if conf.getLogging(): logfile = conf.getLogfile() pathToLog = logfile.rsplit('/', 1)[0] if not os.path.exists(pathToLog): os.makedirs(pathToLog) file_handler = RotatingFileHandler(logfile, maxBytes=conf.getMaxLogSize(), backupCount=conf.getBacklog()) file_handler.setLevel(logging.ERROR) formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") file_handler.setFormatter(formatter) self.app.logger.addHandler(file_handler) #for route in web.Routes.get_routes(self): self.addRoute(route) if conf.getDebug(): # start debug flask server self.app.run(host=conf.getHost(), port=conf.getPort(), debug=True) else: # start asynchronous server using tornado wrapper for flask # ssl connection print("Server starting...") if conf.useSSL(): ssl_options = { "certfile": os.path.join(_runPath, "../", conf.getSSLCert()), "keyfile": os.path.join(_runPath, "../", conf.getSSLKey()) } else: ssl_options = None signal.signal(signal.SIGTERM, self.sig_handler) signal.signal(signal.SIGINT, self.sig_handler) self.http_server = HTTPServer(WSGIContainer(self.app), ssl_options=ssl_options) self.http_server.bind(conf.getPort(), address=conf.getHost()) self.http_server.start(0) # Forks multiple sub-processes IOLoop.instance().start()