skytools.DBScript: make work_state = -1 signal exception
authorMarko Kreen <markokr@gmail.com>
Wed, 9 Sep 2009 11:02:01 +0000 (14:02 +0300)
committerMarko Kreen <markokr@gmail.com>
Wed, 9 Sep 2009 11:02:01 +0000 (14:02 +0300)
If exception was thrown, set work_state = -1, to let consumer
handle next work differently.

python/skytools/scripting.py

index 2b151e9c1caf99569196a1f78226d8dd9a8952cf..2b2f7c50885ba928b6d60720ff4cdba2c938a773 100644 (file)
@@ -286,6 +286,12 @@ class DBScript(object):
     loop_delay = 1
     doc_string = None
 
+    # result from last work() call:
+    #  1 - there is probably more work, don't sleep
+    #  0 - no work, sleep before calling again
+    # -1 - exception was thrown
+    work_state = 1
+
     def __init__(self, service_name, args):
         """Script setup.
 
@@ -307,7 +313,6 @@ class DBScript(object):
         self.need_reload = 1
         self.stat_dict = {}
         self.log_level = logging.INFO
-        self.work_state = 1
 
         # parse command line
         parser = self.init_optparse()
@@ -624,7 +629,7 @@ class DBScript(object):
         self.reset()
         if prefer_looping and self.looping and not self.do_single_loop:
             time.sleep(20)
-            return 1
+            return -1
         sys.exit(1)
 
     def work(self):