def run(self): """ Beschreibung: Startet einen Thread, der laufend prüft (alle 10sek), ob eine Session beendet werden kann. Wenn eine Session innerhalb des Timeouts nicht mehr geantwortet hat, kann sie beendet werden. Parameter: self: Zeigt auf eigene Klasse Rückgabewert: Keiner Exceptions: wirft selbst keine """ log.writeLogLV(config_backend.getLogfile(), "%s-Thread ist bereit...\n" % (self.name), log.LOGLEVEL["debug"]) while not self.killEvent.isSet(): try: time.sleep(10) # Wenn vorher keine Sessions existierten kann auch nichts geprüft werden counter = 0 for session in self.sessionTable: if (int(session[3])+config_backend.getSessionTimeout()) < int(datetime.now().strftime("%s")): # sessionzeit + timeout < aktuelle zeit? dann löschen log.writeLogLV(config_backend.getLogfile(), "%s: Lösche Session %s, weil sie zu lange inaktiv ist\n" % (self.name, session[0]), log.LOGLEVEL["debug"]) del self.sessionTable[counter] counter += 1 except Exception as e: print "Error:", e if config_backend.getDebug(): print traceback.print_exc() log.writeLogLV(config_backend.getLogfile(), "%s: Beende Thread...\n" % (self.name), log.LOGLEVEL["info"])
def __init__(self, killEvent, sessionTable): """ wenn killEvent gesetzt ist, beendet sich der Thread""" threading.Thread.__init__(self) self.name = "session-killer" self.killEvent = killEvent self.timeout = config_backend.getSessionTimeout() self.sessionTable = sessionTable self.oldSessionTable = copy.deepcopy(self.sessionTable) # enthält die Informationen der Session zum vorherigen Zeitpunkt