Ejemplo n.º 1
0
	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
Ejemplo n.º 2
0
	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'))),
		))