Quellcode durchsuchen

合并master分支代码

locky vor 1 Jahr
Ursprung
Commit
07e70122ea

+ 1 - 1
AnsjerPush/eur_config/eur_formal_config.py

@@ -21,7 +21,7 @@ SECRET_ACCESS_KEY = 'ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw'
 PUSH_BUCKET = 'foreignpush'                                # 推送存储桶
 
 # redis节点
-REDIS_ADDRESS = 'push-redis-001.av1kep.0001.euw1.cache.amazonaws.com'
+REDIS_ADDRESS = 'push-redis-ro.av1kep.ng.0001.euw1.cache.amazonaws.com'
 
 APNS_MODE = 'prod'
 

+ 54 - 13
Controller/InitController.py

@@ -1,12 +1,15 @@
 # @Author    : Rocky
 # @File      : InitController.py
 # @Time      : 2023/4/11 17:26
+import json
 import ssl
+import time
 
 from django.http import HttpResponse
 from django.views import View
+from redis.connection import SSLConnection
 
-from Model.models import Device_Info, SceneLog
+from Model.models import Device_Info, SceneLog, EquipmentInfo1
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 import redis
@@ -29,6 +32,8 @@ class InitView(View):
             return self.health_check(request_dict)
         elif operation == 'oci_redis_test':
             return self.oci_redis_test(request_dict)
+        elif operation == 'oci_redis_test_2':
+            return self.oci_redis_test_2(request_dict)
 
     @staticmethod
     def health_check(request_dict):
@@ -48,21 +53,57 @@ class InitView(View):
             key = request_dict.get('key', None)
             value = request_dict.get('value', None)
             response = ResponseObject()
-            redis_host = 'amaaaaaayszequiamxr7cdpparig3ptmytvde5vvnz6n7gceo4232sbhhlsa-p.redis.us-phoenix-1.oci.oraclecloud.com'
-
-            # 创建Redis连接
-            pool = redis.ConnectionPool(host=redis_host)
-            redis_client = redis.Redis(connection_pool=pool, ssl=True, ssl_cert_reqs=None)
-            # redis_client = redis.StrictRedis(
-            #     host=redis_host,
-            #     ssl=True,
-            #     ssl_cert_reqs=None
-            # )
-            redis_client.set(key, value)
-            redis_value = redis_client.get(key)
+            redis_obj = RedisObject()
+            redis_obj.set_data(key, value, 60)
+            redis_value = redis_obj.get_data(key)
             res = {
                 'redis_value': redis_value
             }
             return response.json(0, res)
         except Exception as e:
             return HttpResponse(repr(e), status=500)
+
+    @staticmethod
+    def oci_redis_test_2(request_dict):
+        try:
+            redis_obj = RedisObject()
+            pipe = redis_obj.CONN.pipeline()
+            response = ResponseObject()
+            equipment_info_kwargs = {
+                'device_user_id': '163417566733313800138000',
+                'event_time': int(time.time()),
+                'event_type': 0,
+                'device_uid': 'H47UZJ7PHY2NXKNW111A',
+                'device_nick_name': 'redis_test',
+                'channel': 1,
+                'alarm': 'Motion',
+                'is_st': 0,
+                'add_time': int(time.time()),
+                'storage_location': 1,
+                'event_tag': '',
+                'answer_status': 0
+            }
+            # 保存到redis列表
+            equipment_info_value = json.dumps(equipment_info_kwargs)
+            equipment_info_key = 'equipment_info'
+            pipe.rpush(equipment_info_key, equipment_info_value)
+            pipe.rpush(equipment_info_key, equipment_info_value)
+            pipe.execute()
+
+            equipment_info_redis_list = redis_obj.lrange(equipment_info_key, 0, 99)
+            redis_obj.ltrim(equipment_info_key, 100, -1)
+
+            equipment_info_list = []
+            for equipment_info in equipment_info_redis_list:
+                equipment_info_data = eval(equipment_info)
+                # 设备昵称存在表情,解码utf-8
+                if equipment_info_data.get('device_nick_name') is not None:
+                    equipment_info_data['device_nick_name'] = equipment_info_data['device_nick_name']. \
+                        encode('UTF-8', 'ignore').decode('UTF-8')
+
+                equipment_info_list.append(EquipmentInfo1(**equipment_info_data))
+            EquipmentInfo1.objects.bulk_create(equipment_info_list)
+
+            return response.json(0)
+        except Exception as e:
+            return HttpResponse(repr(e), status=500)

+ 9 - 12
Object/RedisObject.py

@@ -1,5 +1,5 @@
 import redis
-from AnsjerPush.config import REDIS_ADDRESS, CONFIG_INFO, CONFIG_US
+from AnsjerPush.config import REDIS_ADDRESS
 
 # 本地调试把注释打开
 # REDIS_ADDRESS = '127.0.0.1'
@@ -8,17 +8,8 @@ from AnsjerPush.config import REDIS_ADDRESS, CONFIG_INFO, CONFIG_US
 class RedisObject:
 
     def __init__(self, db=0):
-        self.POOL = redis.ConnectionPool(host=REDIS_ADDRESS, port=6379, db=db)
-        self.CONN = redis.Redis(connection_pool=self.POOL)
-        # if CONFIG_INFO != CONFIG_US:
-        #     self.POOL = redis.ConnectionPool(host=REDIS_ADDRESS, port=6379, db=db)
-        #     self.CONN = redis.Redis(connection_pool=self.POOL)
-        # else:
-        #     self.CONN = redis.StrictRedis(
-        #         host=REDIS_ADDRESS,
-        #         ssl=True,
-        #         ssl_cert_reqs=None,
-        #     )
+        pool = redis.ConnectionPool(host=REDIS_ADDRESS, port=6379, db=db)
+        self.CONN = redis.Redis(connection_pool=pool)
 
     def set_data(self, key, val, expire=0):
         try:
@@ -91,3 +82,9 @@ class RedisObject:
         @return : bool
         """
         return self.CONN.lindex(name, index)
+
+    def close(self):
+        """
+        关闭连接
+        """
+        return self.CONN.close()

+ 3 - 5
Service/DevicePushService.py

@@ -244,25 +244,23 @@ class DevicePushService:
                 equipment_info_list = []
                 equipment_info_model = EQUIPMENT_INFO_DICT[equipment_info_key]
 
-                end = 0
-                equipment_info_len = redis_obj.llen(equipment_info_key)
-
                 # 一键通话和视频通话需要实时写入数据
                 # 美洲服通过定时任务写入数据
                 if params['event_type'] in [606, 607] or CONFIG_INFO != CONFIG_US:
+                    end = 0
                     # 缓存数据多于100条,批量保存前100条,否则保存全部
                     equipment_info_len = redis_obj.llen(equipment_info_key)
                     end = 99 if equipment_info_len > 100 else equipment_info_len - 1
 
                     if end != 0:
                         equipment_info_redis_list = redis_obj.lrange(equipment_info_key, 0, end)
-                        redis_obj.ltrim(equipment_info_key, end + 1, -1)
+                        redis_obj.ltrim(equipment_info_key, end+1, -1)
 
                         for equipment_info in equipment_info_redis_list:
                             equipment_info_data = eval(equipment_info)
                             # 设备昵称存在表情,解码utf-8
                             if equipment_info_data.get('device_nick_name') is not None:
-                                equipment_info_data['device_nick_name'] = equipment_info_data['device_nick_name']. \
+                                equipment_info_data['device_nick_name'] = equipment_info_data['device_nick_name'].\
                                     encode('UTF-8', 'ignore').decode('UTF-8')
                             equipment_info_list.append(equipment_info_model(**equipment_info_data))
                         equipment_info_model.objects.bulk_create(equipment_info_list)