InitController.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. # @Author : Rocky
  2. # @File : InitController.py
  3. # @Time : 2023/4/11 17:26
  4. import json
  5. import ssl
  6. import time
  7. from django.http import HttpResponse
  8. from django.views import View
  9. from redis.connection import SSLConnection
  10. from AnsjerPush.config import LOGGER
  11. from Model.models import Device_Info, SceneLog, EquipmentInfo1
  12. from Object.RedisObject import RedisObject
  13. from Object.ResponseObject import ResponseObject
  14. import redis
  15. class InitView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, operation)
  24. def validation(self, request_dict, operation):
  25. if operation == 'health-check': # 负载均衡器健康检测接口
  26. return self.health_check(request_dict)
  27. elif operation == 'oci_redis_test':
  28. return self.oci_redis_test(request_dict)
  29. elif operation == 'oci_redis_test_2':
  30. return self.oci_redis_test_2(request_dict)
  31. @staticmethod
  32. def health_check(request_dict):
  33. try:
  34. redis_obj = RedisObject()
  35. LOGGER.info('打印1')
  36. redis_obj.set_data('health_check', 1)
  37. LOGGER.info('打印2')
  38. response = ResponseObject()
  39. Device_Info.objects.filter().values('id').first()
  40. SceneLog.objects.filter().values('id').first()
  41. return response.json(0)
  42. except Exception as e:
  43. return HttpResponse(repr(e), status=500)
  44. @staticmethod
  45. def oci_redis_test(request_dict):
  46. response = ResponseObject()
  47. try:
  48. key = request_dict.get('key', None)
  49. value = request_dict.get('value', None)
  50. # import rediscluster
  51. # from rediscluster import ClusterConnectionPool
  52. # password = '012bzaKUhleHc2645465'
  53. # startup_nodes = [
  54. # {"host": "10.60.1.113", "port": 6379},
  55. # ]
  56. # pool = ClusterConnectionPool(startup_nodes=startup_nodes, password=password)
  57. # r = rediscluster.RedisCluster(connection_pool=pool)
  58. # r.ping()
  59. # r.set(name=key, value=value, ex=60)
  60. # redis_value = r.get(name=key)
  61. redis_obj = RedisObject()
  62. redis_obj.set_data(key, value, 60)
  63. redis_value = redis_obj.get_data(key)
  64. res = {
  65. 'redis_value': redis_value
  66. }
  67. return response.json(0, res)
  68. except Exception as e:
  69. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  70. @staticmethod
  71. def oci_redis_test_2(request_dict):
  72. try:
  73. redis_obj = RedisObject()
  74. pipe = redis_obj.CONN.pipeline()
  75. response = ResponseObject()
  76. equipment_info_kwargs = {
  77. 'device_user_id': '163417566733313800138000',
  78. 'event_time': int(time.time()),
  79. 'event_type': 0,
  80. 'device_uid': 'H47UZJ7PHY2NXKNW111A',
  81. 'device_nick_name': 'redis_test',
  82. 'channel': 1,
  83. 'alarm': 'Motion',
  84. 'is_st': 0,
  85. 'add_time': int(time.time()),
  86. 'storage_location': 1,
  87. 'event_tag': '',
  88. 'answer_status': 0
  89. }
  90. # 保存到redis列表
  91. equipment_info_value = json.dumps(equipment_info_kwargs)
  92. equipment_info_key = 'equipment_info'
  93. pipe.rpush(equipment_info_key, equipment_info_value)
  94. pipe.rpush(equipment_info_key, equipment_info_value)
  95. pipe.execute()
  96. equipment_info_redis_list = redis_obj.lrange(equipment_info_key, 0, 99)
  97. redis_obj.ltrim(equipment_info_key, 100, -1)
  98. equipment_info_list = []
  99. for equipment_info in equipment_info_redis_list:
  100. equipment_info_data = eval(equipment_info)
  101. # 设备昵称存在表情,解码utf-8
  102. if equipment_info_data.get('device_nick_name') is not None:
  103. equipment_info_data['device_nick_name'] = equipment_info_data['device_nick_name']. \
  104. encode('UTF-8', 'ignore').decode('UTF-8')
  105. equipment_info_list.append(EquipmentInfo1(**equipment_info_data))
  106. EquipmentInfo1.objects.bulk_create(equipment_info_list)
  107. return response.json(0)
  108. except Exception as e:
  109. return HttpResponse(repr(e), status=500)