script/stream/recorder_tweetstream.py
changeset 272 fe2efe3600ea
parent 263 6671e9a4c9c5
child 289 a5eff8f2b81d
--- a/script/stream/recorder_tweetstream.py	Thu Sep 08 21:24:21 2011 +0200
+++ b/script/stream/recorder_tweetstream.py	Fri Sep 09 19:58:39 2011 +0200
@@ -38,13 +38,16 @@
 
 
 def set_logging(options):
-    utils.set_logging(options, logging.getLogger('iri.tweet'))
-    utils.set_logging(options, logging.getLogger('multiprocessing'))
+    loggers = []
+    
+    loggers.append(utils.set_logging(options, logging.getLogger('iri.tweet')))
+    loggers.append(utils.set_logging(options, logging.getLogger('multiprocessing')))
     if options.debug >= 2:
-        utils.set_logging(options, logging.getLogger('sqlalchemy.engine'))
+        loggers.append(utils.set_logging(options, logging.getLogger('sqlalchemy.engine')))
     #utils.set_logging(options, logging.getLogger('sqlalchemy.dialects'))
     #utils.set_logging(options, logging.getLogger('sqlalchemy.pool'))
     #utils.set_logging(options, logging.getLogger('sqlalchemy.orm'))
+    return loggers
 
 def set_logging_process(options, queue):
     qlogger = utils.set_logging(options, logging.getLogger('iri.tweet.p'), queue)
@@ -331,6 +334,8 @@
                       help="Twitter track", metavar="TRACK")
     parser.add_option("-n", "--new", dest="new", action="store_true",
                       help="new database", default=False)
+    parser.add_option("-D", "--daemon", dest="daemon", action="store_true",
+                      help="launch daemon", default=False)
     parser.add_option("-r", "--reconnects", dest="reconnects",
                       help="Reconnects", metavar="RECONNECTS", default=10, type='int')
     parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
@@ -478,13 +483,9 @@
     return stop_args
 
 
-if __name__ == '__main__':
-
-    (options, args) = get_options()
+def main(options, args):
     
-    set_logging(options)
-    
-    utils.get_logger().debug("OPTIONS : " + repr(options))    
+    global conn_str
     
     conn_str = options.conn_str.strip()
     if not re.match("^\w+://.+", conn_str):
@@ -531,4 +532,28 @@
         add_process_event(type="shutdown", args=stop_args, session_maker=Session)
 
     utils.get_logger().debug("Done. Exiting.")
+
+
+
+if __name__ == '__main__':
+
+    (options, args) = get_options()
+    
+    loggers = set_logging(options)
+    
+    utils.get_logger().debug("OPTIONS : " + repr(options))
+    
+    if options.daemon:
+        import daemon
+        import lockfile
         
+        hdlr_preserve = []
+        for logger in loggers:
+            hdlr_preserve.extend([h.stream for h in logger.handlers])
+            
+        context = daemon.DaemonContext(working_directory=os.getcwd(), files_preserve=hdlr_preserve) 
+        with context:
+            main(options, args)
+    else:
+        main(options, args)
+