コード例 #1
0
ファイル: caching.py プロジェクト: Saladpact/HTPC-Manager
 def expire_cache(self):
     """Continuously examine cached objects, expiring stale ones.
     
     This function is designed to be run in its own daemon thread,
     referenced at ``self.expiration_thread``.
     """
     # It's possible that "time" will be set to None
     # arbitrarily, so we check "while time" to avoid exceptions.
     # See tickets #99 and #180 for more information.
     while time:
         now = time.time()
         # Must make a copy of expirations so it doesn't change size
         # during iteration
         for expiration_time, objects in copyitems(self.expirations):
             if expiration_time <= now:
                 for obj_size, uri, sel_header_values in objects:
                     try:
                         del self.store[uri][tuple(sel_header_values)]
                         self.tot_expires += 1
                         self.cursize -= obj_size
                     except KeyError:
                         # the key may have been deleted elsewhere
                         pass
                 del self.expirations[expiration_time]
         time.sleep(self.expire_freq)
コード例 #2
0
 def page(self):
     changemsg = []
     if cherrypy.session.id != cherrypy.session.originalid:
         if cherrypy.session.originalid is None:
             changemsg.append('Created new session because no session id was given.')
         if cherrypy.session.missing:
             changemsg.append('Created new session due to missing (expired or malicious) session.')
         if cherrypy.session.regenerated:
             changemsg.append('Application generated a new session.')
     
     try:
         expires = cherrypy.response.cookie['session_id']['expires']
     except KeyError:
         expires = ''
     
     return page % {
         'sessionid': cherrypy.session.id,
         'changemsg': '<br>'.join(changemsg),
         'respcookie': cherrypy.response.cookie.output(),
         'reqcookie': cherrypy.request.cookie.output(),
         'sessiondata': copyitems(cherrypy.session),
         'servertime': datetime.utcnow().strftime("%Y/%m/%d %H:%M") + " UTC",
         'serverunixtime': calendar.timegm(datetime.utcnow().timetuple()),
         'cpversion': cherrypy.__version__,
         'pyversion': sys.version,
         'expires': expires,
         }
コード例 #3
0
    def clean_up(self):
        """Clean up expired sessions."""
        now = self.now()

        try:
            for id, (data, expiration_time) in copyitems(self.cache):
                if expiration_time <= now:
                    try:
                        del self.cache[id]
                    except KeyError:
                        pass
                    try:
                        del self.locks[id]
                    except KeyError:
                        pass

            # added to remove obsolete lock objects
            for id in list(self.locks):
                if id not in self.cache:
                    self.locks.pop(id, None)

        except RuntimeError:
            # RuntimeError: dictionary changed size during iteration
            # Do nothig. Keep cleanup thread running and maybe next time lucky.
            pass
コード例 #4
0
    def expire_cache(self):
        """Continuously examine cached objects, expiring stale ones.

        This function is designed to be run in its own daemon thread,
        referenced at ``self.expiration_thread``.
        """
        # It's possible that "time" will be set to None
        # arbitrarily, so we check "while time" to avoid exceptions.
        # See tickets #99 and #180 for more information.
        while time:
            now = time.time()
            # Must make a copy of expirations so it doesn't change size
            # during iteration
            for expiration_time, objects in copyitems(self.expirations):
                if expiration_time <= now:
                    for obj_size, uri, sel_header_values in objects:
                        try:
                            del self.store[uri][tuple(sel_header_values)]
                            self.tot_expires += 1
                            self.cursize -= obj_size
                        except KeyError:
                            # the key may have been deleted elsewhere
                            pass
                    del self.expirations[expiration_time]
            time.sleep(self.expire_freq)
コード例 #5
0
ファイル: helper.py プロジェクト: Pluckyduck/eve
 def stop(self):
     td = getattr(self, 'teardown', None)
     if td:
         td()
     cherrypy.engine.exit()
     for name, server in copyitems(getattr(cherrypy, 'servers', {})):
         server.unsubscribe()
         del cherrypy.servers[name]
コード例 #6
0
 def stop(self):
     td = getattr(self, 'teardown', None)
     if td:
         td()
     cherrypy.engine.exit()
     for name, server in copyitems(getattr(cherrypy, 'servers', {})):
         server.unsubscribe()
         del cherrypy.servers[name]
コード例 #7
0
ファイル: sessions.py プロジェクト: Keith2/Plinth
 def clean_up(self):
     """Clean up expired sessions."""
     now = datetime.datetime.now()
     for id, (data, expiration_time) in copyitems(self.cache):
         if expiration_time <= now:
             try:
                 del self.cache[id]
             except KeyError:
                 pass
             try:
                 del self.locks[id]
             except KeyError:
                 pass
コード例 #8
0
 def clean_up(self):
     """Clean up expired sessions."""
     now = datetime.datetime.now()
     for id, (data, expiration_time) in copyitems(self.cache):
         if expiration_time <= now:
             try:
                 del self.cache[id]
             except KeyError:
                 pass
             try:
                 del self.locks[id]
             except KeyError:
                 pass
コード例 #9
0
ファイル: caching.py プロジェクト: connoryang/1v1dec
    def expire_cache(self):
        while time:
            now = time.time()
            for expiration_time, objects in copyitems(self.expirations):
                if expiration_time <= now:
                    for obj_size, uri, sel_header_values in objects:
                        try:
                            del self.store[uri][tuple(sel_header_values)]
                            self.tot_expires += 1
                            self.cursize -= obj_size
                        except KeyError:
                            pass

                    del self.expirations[expiration_time]

            time.sleep(self.expire_freq)
コード例 #10
0
ファイル: caching.py プロジェクト: Pluckyduck/eve
    def expire_cache(self):
        while time:
            now = time.time()
            for expiration_time, objects in copyitems(self.expirations):
                if expiration_time <= now:
                    for obj_size, uri, sel_header_values in objects:
                        try:
                            del self.store[uri][tuple(sel_header_values)]
                            self.tot_expires += 1
                            self.cursize -= obj_size
                        except KeyError:
                            pass

                    del self.expirations[expiration_time]

            time.sleep(self.expire_freq)
コード例 #11
0
ファイル: sessions.py プロジェクト: startup-one/cogofly
    def clean_up(self):
        """Clean up expired sessions."""
        now = self.now()
        for id, (data, expiration_time) in copyitems(self.cache):
            if expiration_time <= now:
                try:
                    del self.cache[id]
                except KeyError:
                    pass
                try:
                    del self.locks[id]
                except KeyError:
                    pass

        # added to remove obsolete lock objects
        for id in list(self.locks):
            if id not in self.cache:
                self.locks.pop(id, None)
コード例 #12
0
ファイル: sessions.py プロジェクト: 089git/calibre
    def clean_up(self):
        """Clean up expired sessions."""
        now = self.now()
        for id, (data, expiration_time) in copyitems(self.cache):
            if expiration_time <= now:
                try:
                    del self.cache[id]
                except KeyError:
                    pass
                try:
                    del self.locks[id]
                except KeyError:
                    pass

        # added to remove obsolete lock objects
        for id in list(self.locks):
            if id not in self.cache:
                self.locks.pop(id, None)
コード例 #13
0
ファイル: sessions.py プロジェクト: shybkoi/WMS-Demo
 def ram_clean_up(self):
     """Clean up expired sessions."""
     from cherrypy._cpcompat import copyitems
     now = datetime.datetime.now()
     for id, (data, expiration_time) in copyitems(self.cache):
         if expiration_time <= now:
             # если uid is None, то пользователь ещё не залогинился или уже разлогинился и протоколировать сессии в БД не нужно
             # если терминальный браузер или fti, то не закрываем сессию в БД
             # иначе закрываем PC-сессию
             auto_close_pc_session(data)
             try:
                 del self.cache[id]
             except KeyError:
                 pass
             try:
                 del self.locks[id]
             except KeyError:
                 pass
コード例 #14
0
    def expire_cache(self):
        """Continuously examine cached objects, expiring stale ones.
        
        This function is designed to be run in its own daemon thread,
        referenced at ``self.expiration_thread``.
        """
        while time:
            now = time.time()
            for expiration_time, objects in copyitems(self.expirations):
                if expiration_time <= now:
                    for obj_size, uri, sel_header_values in objects:
                        try:
                            del self.store[uri][tuple(sel_header_values)]
                            self.tot_expires += 1
                            self.cursize -= obj_size
                        except KeyError:
                            pass

                    del self.expirations[expiration_time]

            time.sleep(self.expire_freq)
コード例 #15
0
ファイル: sessions.py プロジェクト: lez/cherrypy
    def clean_up(self):
        """Clean up expired sessions."""

        now = self.now()
        for _id, (data, expiration_time) in copyitems(self.cache):
            if expiration_time <= now:
                try:
                    del self.cache[_id]
                except KeyError:
                    pass
                try:
                    if self.locks[_id].acquire(blocking=False):
                        lock = self.locks.pop(_id)
                        lock.release()
                except KeyError:
                    pass

        # added to remove obsolete lock objects
        for _id in list(self.locks):
            if _id not in self.cache and self.locks[_id].acquire(blocking=False):
                lock = self.locks.pop(_id)
                lock.release()
コード例 #16
0
ファイル: sessions.py プロジェクト: rayhebard/cherrypy
    def clean_up(self):
        """Clean up expired sessions."""

        now = self.now()
        for _id, (data, expiration_time) in copyitems(self.cache):
            if expiration_time <= now:
                try:
                    del self.cache[_id]
                except KeyError:
                    pass
                try:
                    if self.locks[_id].acquire(blocking=False):
                        lock = self.locks.pop(_id)
                        lock.release()
                except KeyError:
                    pass

        # added to remove obsolete lock objects
        for _id in list(self.locks):
            if _id not in self.cache and self.locks[_id].acquire(blocking=False):
                lock = self.locks.pop(_id)
                lock.release()
コード例 #17
0
ファイル: session.py プロジェクト: xzased/morena
 def clean_up(self):
     """Clean up expired sessions."""
     now = self.now()
     for id, (data, expiration_time) in copyitems(self.cache):
         if expiration_time <= now:
             try:
                 active = Mongo(ActiveSession).find_one("wop", self.cache["wop"])
                 Mongo(ActiveSession).remove(active)
             except:
                 print "Failed to remove active session object."
             try:
                 del self.cache[id]
             except KeyError:
                 pass
             try:
                 del self.locks[id]
             except KeyError:
                 pass
     # added to remove obsolete lock objects
     for id in list(self.locks):
         if id not in self.cache:
             self.locks.pop(id, None)
コード例 #18
0
ファイル: session.py プロジェクト: xzased/morena
 def clean_up(self):
     """Clean up expired sessions."""
     now = self.now()
     for id, (data, expiration_time) in copyitems(self.cache):
         if expiration_time <= now:
             try:
                 active = Mongo(ActiveSession).find_one(
                     'wop', self.cache['wop'])
                 Mongo(ActiveSession).remove(active)
             except:
                 print "Failed to remove active session object."
             try:
                 del self.cache[id]
             except KeyError:
                 pass
             try:
                 del self.locks[id]
             except KeyError:
                 pass
     # added to remove obsolete lock objects
     for id in list(self.locks):
         if id not in self.cache:
             self.locks.pop(id, None)
コード例 #19
0
 def makemap():
     m = self._merged_args().get('map', {})
     cherrypy.request.numerify_map = copyitems(m)
コード例 #20
0
ファイル: sessions.py プロジェクト: richard-liu-0627/logtool
    def clean_up(self):
        """Clean up expired sessions."""
	sList = []
	N = 0
        now = self.now()
        for _id, (data, expiration_time) in copyitems(self.cache):
	    f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
	    print >> f,_id
	    print >> f,expiration_time
	    f.close()
            if expiration_time <= now:
                try:
		    abbb = self.cache.get(_id)
		    filename1 = data
		    f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
		    print >> f,filename1
		    print >> f,abbb
		    f.close()
		    sessiontop = data['top']
		    count = 1
		    while count <= sessiontop :
		        datastr = data['pid' + str(count)]
		        if datastr != 0 :
		            sList.append(datastr)
		            count = count + 1
		            N = N + 1
		            #data['pid' + str(count-1)] = 0
		    data['flag'] = 0
		   # n = 2
		   # sesspid2 = data['pid' + str(n)]
		   # f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
		   # print >> f,sesspid2
		   # f.close()
		   # pidkillnow = sesspid2
		   # killnumber = pidkillnow
		    #if os.kill(pidkillnow,0)!=0:
		     #   os.kill(pidkillnow,9)
		     #   f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
		      #  successkill = "kill success"
		      #  print >> f,successkill
		      #  f.close()
		    del self.cache[_id]
		    self.cache.pop(_id, None)
		    abab = self.cache.get(_id)
		    acac = "clean_up_434"
		    f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
		    print >> f,acac
		    #print >> f,abab
		    f.close()
                except KeyError:
                    pass
                try:
                    f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
		   # print >> f,"xxx"
		    f.close()
		    if self.locks[_id].acquire(blocking=False):
                        lock = self.locks.pop(_id)
                        lock.release()
                except KeyError:
		    f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
		   # print >> f,"yyy"
		    f.close()
                    pass
#	f=open('/Users/i325009/Documents/python/cherrypy-project/logtool/out.txt','w')
#	print >> f,killnumber
#	f.close()

        # added to remove obsolete lock objects
        for _id in list(self.locks):
            if _id not in self.cache and self.locks[_id].acquire(blocking=False):
                lock = self.locks.pop(_id)
                lock.release()
        cn = 1
        if N  > 0 :
                for element in sList:
                        killnumber = element
                        os.kill(killnumber,9)
                del sList[:]
コード例 #21
0
ファイル: test_tools.py プロジェクト: R4M80MrX/eve-1
 def makemap():
     m = self._merged_args().get('map', {})
     cherrypy.request.numerify_map = copyitems(m)
コード例 #22
0
ファイル: _cpmodpy.py プロジェクト: 131db/emotweets
def handler(req):
    from mod_python import apache
    try:
        global _isSetUp
        if not _isSetUp:
            setup(req)
            _isSetUp = True

        # Obtain a Request object from CherryPy
        local = req.connection.local_addr
        local = httputil.Host(local[0], local[1], req.connection.local_host or "")
        remote = req.connection.remote_addr
        remote = httputil.Host(remote[0], remote[1], req.connection.remote_host or "")

        scheme = req.parsed_uri[0] or 'http'
        req.get_basic_auth_pw()

        try:
            # apache.mpm_query only became available in mod_python 3.1
            q = apache.mpm_query
            threaded = q(apache.AP_MPMQ_IS_THREADED)
            forked = q(apache.AP_MPMQ_IS_FORKED)
        except AttributeError:
            bad_value = ("You must provide a PythonOption '%s', "
                         "either 'on' or 'off', when running a version "
                         "of mod_python < 3.1")

            threaded = options.get('multithread', '').lower()
            if threaded == 'on':
                threaded = True
            elif threaded == 'off':
                threaded = False
            else:
                raise ValueError(bad_value % "multithread")

            forked = options.get('multiprocess', '').lower()
            if forked == 'on':
                forked = True
            elif forked == 'off':
                forked = False
            else:
                raise ValueError(bad_value % "multiprocess")

        sn = cherrypy.tree.script_name(req.uri or "/")
        if sn is None:
            send_response(req, '404 Not Found', [], '')
        else:
            app = cherrypy.tree.apps[sn]
            method = req.method
            path = req.uri
            qs = req.args or ""
            reqproto = req.protocol
            headers = copyitems(req.headers_in)
            rfile = _ReadOnlyRequest(req)
            prev = None

            try:
                redirections = []
                while True:
                    request, response = app.get_serving(local, remote, scheme,
                                                        "HTTP/1.1")
                    request.login = req.user
                    request.multithread = bool(threaded)
                    request.multiprocess = bool(forked)
                    request.app = app
                    request.prev = prev

                    # Run the CherryPy Request object and obtain the response
                    try:
                        request.run(method, path, qs, reqproto, headers, rfile)
                        break
                    except cherrypy.InternalRedirect:
                        ir = sys.exc_info()[1]
                        app.release_serving()
                        prev = request

                        if not recursive:
                            if ir.path in redirections:
                                raise RuntimeError("InternalRedirector visited the "
                                                   "same URL twice: %r" % ir.path)
                            else:
                                # Add the *previous* path_info + qs to redirections.
                                if qs:
                                    qs = "?" + qs
                                redirections.append(sn + path + qs)

                        # Munge environment and try again.
                        method = "GET"
                        path = ir.path
                        qs = ir.query_string
                        rfile = BytesIO()

                send_response(req, response.output_status, response.header_list,
                              response.body, response.stream)
            finally:
                app.release_serving()
    except:
        tb = format_exc()
        cherrypy.log(tb, 'MOD_PYTHON', severity=logging.ERROR)
        s, h, b = bare_error()
        send_response(req, s, h, b)
    return apache.OK
コード例 #23
0
def handler(req):
    from mod_python import apache
    try:
        global _isSetUp
        if not _isSetUp:
            setup(req)
            _isSetUp = True

        # Obtain a Request object from CherryPy
        local = req.connection.local_addr
        local = httputil.Host(
            local[0], local[1], req.connection.local_host or '')
        remote = req.connection.remote_addr
        remote = httputil.Host(
            remote[0], remote[1], req.connection.remote_host or '')

        scheme = req.parsed_uri[0] or 'http'
        req.get_basic_auth_pw()

        try:
            # apache.mpm_query only became available in mod_python 3.1
            q = apache.mpm_query
            threaded = q(apache.AP_MPMQ_IS_THREADED)
            forked = q(apache.AP_MPMQ_IS_FORKED)
        except AttributeError:
            bad_value = ("You must provide a PythonOption '%s', "
                         "either 'on' or 'off', when running a version "
                         'of mod_python < 3.1')

            options = req.get_options()

            threaded = options.get('multithread', '').lower()
            if threaded == 'on':
                threaded = True
            elif threaded == 'off':
                threaded = False
            else:
                raise ValueError(bad_value % 'multithread')

            forked = options.get('multiprocess', '').lower()
            if forked == 'on':
                forked = True
            elif forked == 'off':
                forked = False
            else:
                raise ValueError(bad_value % 'multiprocess')

        sn = cherrypy.tree.script_name(req.uri or '/')
        if sn is None:
            send_response(req, '404 Not Found', [], '')
        else:
            app = cherrypy.tree.apps[sn]
            method = req.method
            path = req.uri
            qs = req.args or ''
            reqproto = req.protocol
            headers = copyitems(req.headers_in)
            rfile = _ReadOnlyRequest(req)
            prev = None

            try:
                redirections = []
                while True:
                    request, response = app.get_serving(local, remote, scheme,
                                                        'HTTP/1.1')
                    request.login = req.user
                    request.multithread = bool(threaded)
                    request.multiprocess = bool(forked)
                    request.app = app
                    request.prev = prev

                    # Run the CherryPy Request object and obtain the response
                    try:
                        request.run(method, path, qs, reqproto, headers, rfile)
                        break
                    except cherrypy.InternalRedirect:
                        ir = sys.exc_info()[1]
                        app.release_serving()
                        prev = request

                        if not recursive:
                            if ir.path in redirections:
                                raise RuntimeError(
                                    'InternalRedirector visited the same URL '
                                    'twice: %r' % ir.path)
                            else:
                                # Add the *previous* path_info + qs to
                                # redirections.
                                if qs:
                                    qs = '?' + qs
                                redirections.append(sn + path + qs)

                        # Munge environment and try again.
                        method = 'GET'
                        path = ir.path
                        qs = ir.query_string
                        rfile = io.BytesIO()

                send_response(
                    req, response.output_status, response.header_list,
                    response.body, response.stream)
            finally:
                app.release_serving()
    except:
        tb = format_exc()
        cherrypy.log(tb, 'MOD_PYTHON', severity=logging.ERROR)
        s, h, b = bare_error()
        send_response(req, s, h, b)
    return apache.OK
コード例 #24
0
ファイル: _cpmodpy.py プロジェクト: Pluckyduck/eve
def handler(req):
    global _isSetUp
    from mod_python import apache
    try:
        if not _isSetUp:
            setup(req)
            _isSetUp = True
        local = req.connection.local_addr
        local = httputil.Host(local[0], local[1], req.connection.local_host or '')
        remote = req.connection.remote_addr
        remote = httputil.Host(remote[0], remote[1], req.connection.remote_host or '')
        scheme = req.parsed_uri[0] or 'http'
        req.get_basic_auth_pw()
        try:
            q = apache.mpm_query
            threaded = q(apache.AP_MPMQ_IS_THREADED)
            forked = q(apache.AP_MPMQ_IS_FORKED)
        except AttributeError:
            bad_value = "You must provide a PythonOption '%s', either 'on' or 'off', when running a version of mod_python < 3.1"
            threaded = options.get('multithread', '').lower()
            if threaded == 'on':
                threaded = True
            elif threaded == 'off':
                threaded = False
            else:
                raise ValueError(bad_value % 'multithread')
            forked = options.get('multiprocess', '').lower()
            if forked == 'on':
                forked = True
            elif forked == 'off':
                forked = False
            else:
                raise ValueError(bad_value % 'multiprocess')

        sn = cherrypy.tree.script_name(req.uri or '/')
        if sn is None:
            send_response(req, '404 Not Found', [], '')
        else:
            app = cherrypy.tree.apps[sn]
            method = req.method
            path = req.uri
            qs = req.args or ''
            reqproto = req.protocol
            headers = copyitems(req.headers_in)
            rfile = _ReadOnlyRequest(req)
            prev = None
            try:
                redirections = []
                while True:
                    request, response = app.get_serving(local, remote, scheme, 'HTTP/1.1')
                    request.login = req.user
                    request.multithread = bool(threaded)
                    request.multiprocess = bool(forked)
                    request.app = app
                    request.prev = prev
                    try:
                        request.run(method, path, qs, reqproto, headers, rfile)
                        break
                    except cherrypy.InternalRedirect:
                        ir = sys.exc_info()[1]
                        app.release_serving()
                        prev = request
                        if not recursive:
                            if ir.path in redirections:
                                raise RuntimeError('InternalRedirector visited the same URL twice: %r' % ir.path)
                            else:
                                if qs:
                                    qs = '?' + qs
                                redirections.append(sn + path + qs)
                        method = 'GET'
                        path = ir.path
                        qs = ir.query_string
                        rfile = BytesIO()

                send_response(req, response.status, response.header_list, response.body, response.stream)
            finally:
                app.release_serving()

    except:
        tb = format_exc()
        cherrypy.log(tb, 'MOD_PYTHON', severity=logging.ERROR)
        s, h, b = bare_error()
        send_response(req, s, h, b)

    return apache.OK