summaryrefslogtreecommitdiff
path: root/Code/get_mapped_data.py
diff options
context:
space:
mode:
authorLan Hui <lanhui@zjnu.edu.cn>2025-10-04 16:20:41 +0800
committerLan Hui <lanhui@zjnu.edu.cn>2025-10-04 16:20:41 +0800
commit466dde75d1f16ac72ee47295fdea45d0389fb55c (patch)
tree991579c281ee7cc266361a4e357ec227bfea1e74 /Code/get_mapped_data.py
parent8aeb7af852d251d459248f25f92eab48f5042f62 (diff)
parent97087d6882ffcb317d54e64113fc86d937c52786 (diff)
Merge branch 'master' of 118.25.96.118:~/BRAINCL
Diffstat (limited to 'Code/get_mapped_data.py')
-rw-r--r--Code/get_mapped_data.py40
1 files changed, 31 insertions, 9 deletions
diff --git a/Code/get_mapped_data.py b/Code/get_mapped_data.py
index b718319..9ad1093 100644
--- a/Code/get_mapped_data.py
+++ b/Code/get_mapped_data.py
@@ -1,19 +1,41 @@
-from configure import MAPPED_RDATA_DIR, UPDATE_NETWORK_LOG_FILE
+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')
-r = redis.Redis(host=redis_host, port=6379, password=redis_password, db=0)
+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)
-pubsub.subscribe(REDIS_CHANNEL)
-for message in pubsub.listen():
- quant_data = json.loads(message['data'])
- filename = os.path.join(MAPPED_RDATA_DIR, quant_data['filename'])
- write_log_file('[get_mapped_data.py] Save %s.' % (filename), UPDATE_NETWORK_LOG_FILE)
- with open(filename, 'w') as f:
- f.write(quant_data['data'])
+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