def Session(req, sid=0, secret=None, timeout=0, lock=1): opts = req.get_options() # Check the apache config for the type of session if opts.has_key('mod_python.session.session_type'): sess_type = opts['mod_python.session.session_type'] elif opts.has_key('session'): # For backwards compatability with versions # of mod_python prior to 3.3. sess_type = opts['session'] else: # no session class in config so get the default for the platform threaded = _apache.mpm_query(apache.AP_MPMQ_IS_THREADED) forked = _apache.mpm_query(apache.AP_MPMQ_IS_FORKED) daemons = _apache.mpm_query(apache.AP_MPMQ_MAX_DAEMONS) if (threaded and ((not forked) or (daemons == 1))): sess_type = 'MemorySession' else: sess_type = 'DbmSession' if sess_type == 'FileSession': sess = FileSession elif sess_type == 'DbmSession': sess = DbmSession elif sess_type == 'MemorySession': sess = MemorySession else: # TODO Add capability to load a user defined class # For now, just raise an exception. raise Exception, 'Unknown session type %s' % sess_type return sess(req, sid=sid, secret=secret, timeout=timeout, lock=lock)
def Session(req, sid=0, secret=None, timeout=0, lock=1): opts = req.get_options() # Check the apache config for the type of session if 'mod_python.session.session_type' in opts: sess_type = opts['mod_python.session.session_type'] elif 'session' in opts: # For backwards compatability with versions # of mod_python prior to 3.3. sess_type = opts['session'] else: # no session class in config so get the default for the platform threaded = _apache.mpm_query(apache.AP_MPMQ_IS_THREADED) forked = _apache.mpm_query(apache.AP_MPMQ_IS_FORKED) daemons = _apache.mpm_query(apache.AP_MPMQ_MAX_DAEMONS) if (threaded and ((not forked) or (daemons == 1))): sess_type = 'MemorySession' else: sess_type = 'DbmSession' if sess_type == 'FileSession': sess = FileSession elif sess_type == 'DbmSession': sess = DbmSession elif sess_type == 'MemorySession': sess = MemorySession else: # TODO Add capability to load a user defined class # For now, just raise an exception. raise Exception('Unknown session type %s' % sess_type) return sess(req, sid=sid, secret=secret, timeout=timeout, lock=lock)
def _init_rnd(): """ initialize random number generators this is key in multithreaded env, see python docs for random """ # query max number of threads if _apache.mpm_query(apache.AP_MPMQ_IS_THREADED): gennum = _apache.mpm_query(apache.AP_MPMQ_MAX_SPARE_THREADS) else: gennum = 10 # make generators # this bit is from Python lib reference g = random.Random(time.time()) result = [g] for i in range(gennum - 1): laststate = g.getstate() g = random.Random() g.setstate(laststate) g.jumpahead(1000000) result.append(g) return result