Rispettata la variabile max_time
Leonardo Robol [2010-04-19 06:44]
Rispettata la variabile max_time
diff --git a/phcstats.py b/phcstats.py
index a19aafa..bba76f9 100755
--- a/phcstats.py
+++ b/phcstats.py
@@ -18,7 +18,7 @@ database_directory = '/home/robol/client_stats/'
# max_time controlla il massimo numero di secondi di cui possono
# essere "vecchie" le informazioni conservate dallo script.
-max_time = 86400 * 10 / 3 / 60 # ~ 10 giorni
+max_time = 86400 * 30 # ~ 1 mese
# Questo è il gruppo di dsh da cui rilevare le informazioni sui client
# da monitorare. In realtà può essere un qualsiasi file di testo con
@@ -112,7 +112,7 @@ def LoadClientData(client):
sono nella forma di un dizionario con gli oggetti time e
Valori True o False
"""
- LockDatabase()
+
data = {}
try:
f = open(database_directory + client, 'r')
@@ -124,12 +124,27 @@ def LoadClientData(client):
alive = ("True" in alive)
data[float(time)] = alive
f.close()
- UnlockDatabase()
+
return data
def AppendClientData(client, t, alive):
+ """
+ Aggiunge in coda i dati sul client e controlla che
+ non ci siano dati troppo vecchi, nel qual caso li
+ elimina
+ """
LockDatabase()
+
+ data = LoadClientData(client)
+ filtered_data = filter(lambda i: i[0] > float(time.time()) - max_time, data.items())
+ if len(filtered_data) < len(data):
+ Verbose ("There are %d of %d records to delete" % (len(data) - len(filtered_data), len(data)))
+ data = dict(filtered_data)
+ f = open(database_directory + client, 'w')
+ for (t, v) in data.items():
+ f.write(str(t) + ":" + str(v) + "\n")
+ f.close()
f = open(database_directory + client, 'a')
f.write(str(t) + ":" + str(alive) + "\n")
f.close ()