def launch_spot_batch_service(): """ Launch dispatcher on t2.micro EC2 instance, in the future this will be in AWS Lambda 1. Multiple instances can (and should) be launched concurrently, i.e. in different AZ's 2. Install as a service that starts at system boot, this is detailed in the README """ if len(sys.argv) == 1: print 'ERROR: Missing log configuration file, first argument must be path/name.ext of the log configuration file' sys.exit(8) logging.config.fileConfig( sys.argv[1], disable_existing_loggers=False) logger = logging.getLogger(__name__) try: logger.info( '**********************************' ) logger.info( 'Starting SpotBatchMgr Version: ' + awsspotbatch.Version ) logger.info( '**********************************' ) if len(sys.argv) == 2: logger.error('Missing master parm item file, second argument must be path/name.ext of master parm item json file') sys.exit(8) master_parm_item = MasterParmItem( sys.argv[2] ) is_purge_queues = False if len(sys.argv) > 3 and sys.argv[3] == 'purge': is_purge_queues = True spot_master_sqs_message_durable = SqsMessageDurable( awsspotbatch.common.const.SPOT_MASTER_QUEUE_NAME, master_parm_item.region_name, profile_name=master_parm_item.profile_name ) spot_request_sqs_message_durable = SqsMessageDurable( awsspotbatch.common.const.SPOT_REQUEST_QUEUE_NAME, master_parm_item.region_name, profile_name=master_parm_item.profile_name ) if is_purge_queues: spot_master_sqs_message_durable.purge_queue() spot_request_sqs_message_durable.purge_queue() spot_master_dispatcher = SpotMasterDispatcher( region_name=master_parm_item.region_name, profile_name=master_parm_item.profile_name ) spot_request_dispatcher = SpotRequestDispatcher( region_name=master_parm_item.region_name, profile_name=master_parm_item.profile_name ) spot_master_dispatcher.start() logger.info("Started: spot_master_dispatcher") spot_request_dispatcher.start() logger.info("Started: spot_request_dispatcher") spot_master_dispatcher.join() except StandardError as e: logger.error( e ) logger.error( traceback.format_exc() ) sys.exit(8)
def main(): """ """ import logging.config logging.config.fileConfig( '../../../../config/consoleandfile.conf', disable_existing_loggers=False) logger = logging.getLogger(__name__) try: logger.info( 'Starting' ) master_parm_item = MasterParmItem( sys.argv[1] ) spot_master_sqs_message_durable = SqsMessageDurable( awsspotbatch.common.const.SPOT_MASTER_QUEUE_NAME, master_parm_item.region_name, profile_name=master_parm_item.profile_name ) spot_request_sqs_message_durable = SqsMessageDurable( awsspotbatch.common.const.SPOT_REQUEST_QUEUE_NAME, master_parm_item.region_name, profile_name=master_parm_item.profile_name ) # TEST TEST TEST - only during development spot_master_sqs_message_durable.purge_queue() spot_request_sqs_message_durable.purge_queue() spot_master_dispatcher = SpotMasterDispatcher( region_name=master_parm_item.region_name, profile_name=master_parm_item.profile_name ) spot_request_dispatcher = SpotRequestDispatcher( region_name=master_parm_item.region_name, profile_name=master_parm_item.profile_name ) spot_master_dispatcher.start() spot_request_dispatcher.start() spot_master_msg_batch_submit = create_spot_master_msg_batch_submit( sys.argv[2], sys.argv[3] ) message_attributes = create_microsvc_message_attributes( awsspotbatch.common.const.MICROSVC_MASTER_CLASSNAME_SpotMasterMessageSubmitBatch ) spot_master_sqs_message_durable.send_message( spot_master_msg_batch_submit.to_json(), message_attributes=message_attributes ) spot_master_dispatcher.join() logger.info( 'Completed Successfully' ) except StandardError as e: logger.error( e ) logger.error( traceback.format_exc() ) sys.exit(8)