from configure import MAPPED_RDATA_DIR from configure import REDIS_CHANNEL from log import write_log_file import redis # install redis on Ubuntu using this command: sudo apt install python3-redis from redis.retry import Retry from redis.backoff import ExponentialBackoff import json import os import socket import time redis_password = os.getenv('REDIS_PASSWORD', '123456') redis_host = os.getenv('REDIS_HOST', '127.0.0.1') print(f'{redis_host} {redis_password}') keepalive_options = { socket.TCP_KEEPIDLE: 60, socket.TCP_KEEPCNT: 5, socket.TCP_KEEPINTVL: 10 } r = redis.Redis(host=redis_host, port=6379, password=redis_password, db=0, socket_timeout=None, socket_keepalive=True, socket_keepalive_options=keepalive_options, retry=Retry(ExponentialBackoff(cap=10, base=1), 25), retry_on_error=[redis.exceptions.ConnectionError, redis.exceptions.TimeoutError]) #r = redis.Redis(host=redis_host, port=6379, password=redis_password, db=0) pubsub = r.pubsub(ignore_subscribe_messages=True) while True: try: pubsub.subscribe(REDIS_CHANNEL) print(f'Subscribed to {REDIS_CHANNEL}') print('Listen ...') for message in pubsub.listen(): quant_data = json.loads(message['data']) filename = os.path.join(MAPPED_RDATA_DIR, quant_data['filename']) if 'quant' in filename: write_log_file('[get_mapped_data.py] Save %s.' % (filename), 'LOG.txt') with open(filename, 'w') as f: f.write(quant_data['data']) except Exception as e: print(f'{e}') time.sleep(60) continue