def getHandle(): #open database db.open(dbparams.db_class) #create in-memory session manager sessionManager.open(inMemorySessionManager.SessionManager, 1200) oSystemUser = db.getItem('system') currentThread().session = sessionManager.create(oSystemUser) currentThread().trans = None return db
def __init__(self): self.running = False self.sessionManager = None self.mgtServer = None logger = serverLogging.logger self.shutdownEvt = Event() self.shutdownThread = Thread( target=self.shutdown, name='Shutdown thread' ) self.shutdownThread.start() try: # initialize logging serverLogging.initialize_logging() logger.info('Server starting...') # get server parameters from porcupine.config import serverSettings # get request interfaces from porcupine.config import requesttypes logger.info('Succesfullly registered %i request interfaces' % \ len(requesttypes.requestInterfaces)) # load registrations logger.info('Loading store & web apps registrations...') from porcupine.config import registrations logger.info('Starting management server...') from porcupine.config import mgtparams Mgt.open(mgtparams.serverAddress, mgtparams.worker_threads) # open database logger.info('Opening database...') from porcupine.config import dbparams db.open(dbparams.db_class) # create session manager logger.info('Creating session manager...') from porcupine.config import smparams sessionManager.open(smparams.sm_class, smparams.timeout) Mgt.mgtServer.mainServer = self # replication if db.db_handle.supports_replication or \ sessionManager.sm.supports_replication: from porcupine.config import replication # check if we have consistent interfaces if db.db_handle.supports_replication != \ sessionManager.sm.supports_replication: if db.db_handle.supports_replication and \ not(sessionManager.sm.supports_replication): sError = 'Database supports replication but the ' + \ 'session manager does not.' else: sError = 'Session manager supports replication but ' + \ 'the store does not.' raise serverExceptions.ConfigurationError, \ 'Mismatched interfaces.\n%s' % sError Mgt.mgtServer.sync(replication.host_priority, \ replication.hostaddr) # start server logger.info('Starting main service...') from porcupine.core import thread asyncBaseServer.BaseServer.__init__(self, "Porcupine Server", serverSettings.serverAddress, serverSettings.worker_threads, thread.PorcupineThread, requestHandler) except serverExceptions.ConfigurationError, e: logger.error(e.info) self.initiateShutdown() raise e