summaryrefslogtreecommitdiff
path: root/Code/get_mapped_data.py
blob: 9ad10933fb3601de2b86effb27044df10a7e9f95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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