Rispettata la variabile max_time

Leonardo Robol [2010-04-19 06:44]
Rispettata la variabile max_time
Filename
phcstats.py
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 ()
ViewGit