def _clean_loop(self):
'''
Cleans up garbage in brain so it will run faster.
'''
logger.info('Cleaner started')
fmt = '%Y %b %d %H:%M:%S'
period_seconds = 2
obselete_seconds = 10
while not self._cleaner_stop:
obselete_pids = []
long_ago = datetime.now() - timedelta(seconds=obselete_seconds)
for pid, profile in self.pid_profiles.iteritems():
last_seen = datetime.strptime(
profile['last_seen'], fmt)
if last_seen <= long_ago and not is_alive(pid):
obselete_pids.append(pid)
if obselete_pids:
logger.debug('Cleaning obselete pids: %r...' % obselete_pids)
for obselete_pid in obselete_pids:
try:
del self.pid_profiles[obselete_pid]
except KeyError:
pass
eventlet.sleep(period_seconds)
logger.info('Cleaner stopped')
评论列表
文章目录