mirror of https://github.com/D4-project/d4-core
				
				
				
			
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env python3
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| 
 | |
| import redis
 | |
| import time
 | |
| import datetime
 | |
| 
 | |
| import argparse
 | |
| import logging
 | |
| import logging.handlers
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     parser = argparse.ArgumentParser(description='Export d4 data to stdout')
 | |
|     parser.add_argument('-t', '--type', help='d4 type' , type=int, dest='type', required=True)
 | |
|     parser.add_argument('-u', '--uuid', help='queue uuid' , type=str, dest='uuid', required=True)
 | |
|     parser.add_argument('-f', '--files', help='read data from files. Append file to stdin', action="store_true")
 | |
|     parser.add_argument('-n', '--newline', help='add new lines', action="store_true")
 | |
|     parser.add_argument('-i', '--ip',help='redis host' , type=str, default='127.0.0.1', dest='host_redis')
 | |
|     parser.add_argument('-p', '--port',help='redis port' , type=int, default=6380, dest='port_redis')
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     if not args.uuid or not args.type:
 | |
|         parser.print_help()
 | |
|         sys.exit(0)
 | |
| 
 | |
|     host_redis=args.host_redis
 | |
|     port_redis=args.port_redis
 | |
|     newLines = args.newline
 | |
|     read_files = args.files
 | |
| 
 | |
|     redis_d4= redis.StrictRedis(
 | |
|                         host=host_redis,
 | |
|                         port=port_redis,
 | |
|                         db=2)
 | |
|     try:
 | |
|         redis_d4.ping()
 | |
|     except redis.exceptions.ConnectionError:
 | |
|         print('Error: Redis server {}:{}, ConnectionError'.format(host_redis, port_redis))
 | |
|         sys.exit(1)
 | |
| 
 | |
|     # logs_dir = 'logs'
 | |
|     # if not os.path.isdir(logs_dir):
 | |
|     #     os.makedirs(logs_dir)
 | |
|     #
 | |
|     # log_filename = 'logs/d4-stdout.log'
 | |
|     # logger = logging.getLogger()
 | |
|     # formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
 | |
|     # handler_log = logging.handlers.TimedRotatingFileHandler(log_filename, when="midnight", interval=1)
 | |
|     # handler_log.suffix = '%Y-%m-%d.log'
 | |
|     # handler_log.setFormatter(formatter)
 | |
|     # logger.addHandler(handler_log)
 | |
|     # logger.setLevel(args.verbose)
 | |
|     #
 | |
|     # logger.info('Launching stdout Analyzer ...')
 | |
| 
 | |
|     d4_uuid = args.uuid
 | |
|     d4_type = args.type
 | |
| 
 | |
|     data_queue = 'analyzer:{}:{}'.format(d4_type, d4_uuid)
 | |
| 
 | |
|     while True:
 | |
|         d4_data = redis_d4.rpop(data_queue)
 | |
|         if d4_data is None:
 | |
|             time.sleep(1)
 | |
|             continue
 | |
|         if read_files:
 | |
|             try:
 | |
|                 with open(d4_data, 'rb') as f:
 | |
|                     sys.stdout.buffer.write(f.read())
 | |
|                     sys.exit(0)
 | |
|             except FileNotFoundError:
 | |
|                 ## TODO: write logs file
 | |
|                 continue
 | |
| 
 | |
|         else:
 | |
|             if newLines:
 | |
|                 sys.stdout.buffer.write(d4_data + b'\n')
 | |
|             else:
 | |
|                 sys.stdout.buffer.write(d4_data)
 |