script/stream/recorder_tweetstream.py
changeset 272 fe2efe3600ea
parent 263 6671e9a4c9c5
child 289 a5eff8f2b81d
equal deleted inserted replaced
271:4e4e2fda4e66 272:fe2efe3600ea
    36 columns_user = [u'follow_request_sent', u'profile_use_background_image', u'id', u'verified', u'profile_sidebar_fill_color', u'profile_text_color', u'followers_count', u'protected', u'location', u'profile_background_color', u'id_str', u'utc_offset', u'statuses_count', u'description', u'friends_count', u'profile_link_color', u'profile_image_url', u'notifications', u'show_all_inline_media', u'geo_enabled', u'profile_background_image_url', u'name', u'lang', u'following', u'profile_background_tile', u'favourites_count', u'screen_name', u'url', u'created_at', u'contributors_enabled', u'time_zone', u'profile_sidebar_border_color', u'is_translator', u'listed_count']
    36 columns_user = [u'follow_request_sent', u'profile_use_background_image', u'id', u'verified', u'profile_sidebar_fill_color', u'profile_text_color', u'followers_count', u'protected', u'location', u'profile_background_color', u'id_str', u'utc_offset', u'statuses_count', u'description', u'friends_count', u'profile_link_color', u'profile_image_url', u'notifications', u'show_all_inline_media', u'geo_enabled', u'profile_background_image_url', u'name', u'lang', u'following', u'profile_background_tile', u'favourites_count', u'screen_name', u'url', u'created_at', u'contributors_enabled', u'time_zone', u'profile_sidebar_border_color', u'is_translator', u'listed_count']
    37 #just put it in a sqlite3 tqble
    37 #just put it in a sqlite3 tqble
    38 
    38 
    39 
    39 
    40 def set_logging(options):
    40 def set_logging(options):
    41     utils.set_logging(options, logging.getLogger('iri.tweet'))
    41     loggers = []
    42     utils.set_logging(options, logging.getLogger('multiprocessing'))
    42     
       
    43     loggers.append(utils.set_logging(options, logging.getLogger('iri.tweet')))
       
    44     loggers.append(utils.set_logging(options, logging.getLogger('multiprocessing')))
    43     if options.debug >= 2:
    45     if options.debug >= 2:
    44         utils.set_logging(options, logging.getLogger('sqlalchemy.engine'))
    46         loggers.append(utils.set_logging(options, logging.getLogger('sqlalchemy.engine')))
    45     #utils.set_logging(options, logging.getLogger('sqlalchemy.dialects'))
    47     #utils.set_logging(options, logging.getLogger('sqlalchemy.dialects'))
    46     #utils.set_logging(options, logging.getLogger('sqlalchemy.pool'))
    48     #utils.set_logging(options, logging.getLogger('sqlalchemy.pool'))
    47     #utils.set_logging(options, logging.getLogger('sqlalchemy.orm'))
    49     #utils.set_logging(options, logging.getLogger('sqlalchemy.orm'))
       
    50     return loggers
    48 
    51 
    49 def set_logging_process(options, queue):
    52 def set_logging_process(options, queue):
    50     qlogger = utils.set_logging(options, logging.getLogger('iri.tweet.p'), queue)
    53     qlogger = utils.set_logging(options, logging.getLogger('iri.tweet.p'), queue)
    51     qlogger.propagate = 0
    54     qlogger.propagate = 0
    52     return qlogger
    55     return qlogger
   329                       help="Twitter password", metavar="PASSWORD", default=None)
   332                       help="Twitter password", metavar="PASSWORD", default=None)
   330     parser.add_option("-T", "--track", dest="track",
   333     parser.add_option("-T", "--track", dest="track",
   331                       help="Twitter track", metavar="TRACK")
   334                       help="Twitter track", metavar="TRACK")
   332     parser.add_option("-n", "--new", dest="new", action="store_true",
   335     parser.add_option("-n", "--new", dest="new", action="store_true",
   333                       help="new database", default=False)
   336                       help="new database", default=False)
       
   337     parser.add_option("-D", "--daemon", dest="daemon", action="store_true",
       
   338                       help="launch daemon", default=False)
   334     parser.add_option("-r", "--reconnects", dest="reconnects",
   339     parser.add_option("-r", "--reconnects", dest="reconnects",
   335                       help="Reconnects", metavar="RECONNECTS", default=10, type='int')
   340                       help="Reconnects", metavar="RECONNECTS", default=10, type='int')
   336     parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
   341     parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
   337                       help="Token file name")
   342                       help="Token file name")
   338     parser.add_option("-d", "--duration", dest="duration",
   343     parser.add_option("-d", "--duration", dest="duration",
   476         pengine.dispose()
   481         pengine.dispose()
   477 
   482 
   478     return stop_args
   483     return stop_args
   479 
   484 
   480 
   485 
   481 if __name__ == '__main__':
   486 def main(options, args):
   482 
   487     
   483     (options, args) = get_options()
   488     global conn_str
   484     
       
   485     set_logging(options)
       
   486     
       
   487     utils.get_logger().debug("OPTIONS : " + repr(options))    
       
   488     
   489     
   489     conn_str = options.conn_str.strip()
   490     conn_str = options.conn_str.strip()
   490     if not re.match("^\w+://.+", conn_str):
   491     if not re.match("^\w+://.+", conn_str):
   491         conn_str = 'sqlite:///' + options.conn_str
   492         conn_str = 'sqlite:///' + options.conn_str
   492         
   493         
   529         raise
   530         raise
   530     finally:    
   531     finally:    
   531         add_process_event(type="shutdown", args=stop_args, session_maker=Session)
   532         add_process_event(type="shutdown", args=stop_args, session_maker=Session)
   532 
   533 
   533     utils.get_logger().debug("Done. Exiting.")
   534     utils.get_logger().debug("Done. Exiting.")
   534         
   535 
       
   536 
       
   537 
       
   538 if __name__ == '__main__':
       
   539 
       
   540     (options, args) = get_options()
       
   541     
       
   542     loggers = set_logging(options)
       
   543     
       
   544     utils.get_logger().debug("OPTIONS : " + repr(options))
       
   545     
       
   546     if options.daemon:
       
   547         import daemon
       
   548         import lockfile
       
   549         
       
   550         hdlr_preserve = []
       
   551         for logger in loggers:
       
   552             hdlr_preserve.extend([h.stream for h in logger.handlers])
       
   553             
       
   554         context = daemon.DaemonContext(working_directory=os.getcwd(), files_preserve=hdlr_preserve) 
       
   555         with context:
       
   556             main(options, args)
       
   557     else:
       
   558         main(options, args)
       
   559