]> andersk Git - sql.git/blobdiff - libexec/daily_afs_backups
git-svn-id: svn://presbrey.mit.edu/sql@174 a142d4bd-2cfb-0310-9673-cb33a7e74f58
[sql.git] / libexec / daily_afs_backups
index 08f72be37e75bdf1631249f98cdd57ae347a4a84..ecdadfdd7760c35741bf40a1a0379a493dcf607c 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 
-import os, sys
-import sql.db
+import os, sys, time
+from sql import db
 from sql.util import new_cursor, get_dbs, db_backup_pre, db_backup_mkdir
 from Queue import Queue, Empty
 import threading
@@ -20,12 +20,12 @@ def consumer():
     while True:
         try:
             next = queue.get(timeout=3)
-            print next[0] + ':',
-            log = sql.db.Backup.get_by(db=next[0])
+            #print next[0] + ':',
+            log = db.Backup.get_by(db=next[0])
             if not log:
-                log = sql.db.Backup(db=next[0])
+                log = db.Backup(db=next[0])
             log.dump_path = next[1]
-            log.dump_date = sql.db.func.now()
+            log.dump_date = db.func.now()
             db_backup_mkdir(next[1])
             args = ['mysqldump', next[0]]
             args.extend(MYSQLDUMP_ARGS)
@@ -40,8 +40,8 @@ def consumer():
                 log.dump_errnum = None
                 log.dump_errstr = None
             log.save_or_update()
-            sql.db.session.flush()
-            print 'Done'
+            db.session.flush()
+            #print 'Done'
         except (KeyboardInterrupt, SystemExit):
             break
         except Empty:
@@ -54,9 +54,13 @@ t_consumer.start()
 def producer():
     c = new_cursor('mysqldump')
     for db in get_dbs(c):
-        log = sql.db.Backup.get_by(db=db)
+        log = db.Backup.get_by(db=db)
         if not log:
-            log = sql.db.Backup(db=db)
+            log = db.Backup(db=db)
+        elif log.skip_date and log.skip_date.timetuple:
+            if time.mktime(log.skip_date.timetuple()) + 3600 > time.time():
+                # never recheck a db skipped in the past hour
+                continue
         d = db_backup_pre(c, db)
         if d[0]:
             queue.put((db, d[1]))
@@ -64,9 +68,9 @@ def producer():
             log.skip_date = None
         else:
             log.skip_reason = d[1]
-            log.skip_date = sql.db.func.now()
+            log.skip_date = db.func.now()
         log.save_or_update()
-        sql.db.session.flush()
+        #db.session.flush()
 
 try:
     producer()
This page took 0.397599 seconds and 4 git commands to generate.