"""Queue consumer script. For each message retrieved from the queue, this script: - parses out the path of the WAV file to be fingerprinted - runs the codegen binary on that file - captures the results to the database The script runs for a limited duration, specified on the command line. CLI Args: queue (str): name of the queue to poll duration (int): number of seconds to poll queue before exiting """ import argparse from fpcapture.connectors import mysql from fpcapture.connectors import sqs from fpcapture.logic import queue as queue_logic from utils.timer import Timer if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-q', '--queue', required=True) parser.add_argument('-d', '--duration', default=90, type=int) args = parser.parse_args() timer = Timer(args.duration) queue = sqs.connection.get_queue(args.queue) try: db_session = mysql.fpc_session() queue_logic.poll_in_loop(queue=queue, db_session=db_session, timer=timer) except: db_session.rollback() raise finally: db_session.close()