Ejemplo n.º 1
0
    def open_session(self, env, **kwargs):
        """
        Creates a new session for the :class:`aj.http.HttpContext`
        """
        max_sessions = aj.config.data['max_sessions']
        if max_sessions and len(self.sessions) >= max_sessions:
            candidates = sorted(self.sessions.keys(),
                                key=lambda k: -self.sessions[k].get_age())
            victim = self.sessions[candidates[0]]
            logging.info("Closing session %s due to pool overflow" % victim.id)
            victim.deactivate()
            self.vacuum()

        client_info = {
            'address': env.get('REMOTE_ADDR', None),
        }
        session_key = self.generate_session_key(env)
        session_max_time = aj.config.data['session_max_time']
        session = Session(session_key,
                          gateway_middleware=self,
                          client_info=client_info,
                          session_max_time=session_max_time,
                          **kwargs)
        self.sessions[session_key] = session
        return session
Ejemplo n.º 2
0
 def open_session(self, env, **kwargs):
     """
     Creates a new session for the :class:`aj.http.HttpContext`
     """
     client_info = {
         'address': env.get('REMOTE_ADDR', None),
     }
     session_key = self.generate_session_key(env)
     session = Session(session_key, client_info=client_info, **kwargs)
     self.sessions[session_key] = session
     return session