add daemon option
authorYves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Fri, 09 Sep 2011 20:00:32 +0200
changeset 273 f4703243f35d
parent 271 4e4e2fda4e66
child 274 5b95aa665776
add daemon option
script/stream/recorder_tweetstream.py
script/virtualenv/res/lockfile-0.9.1.tar.gz
script/virtualenv/res/python-daemon-1.5.5.tar.gz
--- a/script/stream/recorder_tweetstream.py	Thu Sep 08 21:24:21 2011 +0200
+++ b/script/stream/recorder_tweetstream.py	Fri Sep 09 20:00:32 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)
+
Binary file script/virtualenv/res/lockfile-0.9.1.tar.gz has changed
Binary file script/virtualenv/res/python-daemon-1.5.5.tar.gz has changed