def process_messages(self): if not self.isStarted: # Fail returnValue(None) self._process += 1 # Try try: # Debug msg(self.name, 'process messages', system='-') success = None current = reactor.seconds() removed = [] # Short delete = messages.delete append = removed.append # Confog oldLast = config.getint('garbage', 'old-last-messages') oldTime = config.getint('garbage', 'old-time-messages') # Clean messages for id, message in messages.getData().iteritems(): if message.tos <= 0: if (message.last and (current - message.last) >= oldLast): # Remove message if DEBUG: msg(self.name, 'process messages', 'remove, old last', id, current - message.last, system='-') append(id) elif (message.last is None and (current - message.time) >= oldTime): # Remove message if DEBUG: msg(self.name, 'process messages', 'remove, old time', id, current - message.time, system='-') append(id) # Sleep (yield sleep(1)) for id in removed: # Remove message delete(id) # Debug msg(self.name, 'process messages stops', system='-') finally: self._process -= 1
def __init__(self): self.name = 'Garbage' self.loop = -1 # Inside self._stopCall = None self._stopDeferred = None self._workers = 0 self._process = 0 self._state = 'stopped' self._runs = dict(( ('messages', (LoopingCall(self.process_messages), config.getint('garbage', 'messages-interval'))), ))