InitController.py 4.7 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 Model.models import Device_Info, SceneLog, EquipmentInfo1
  11. from Object.RedisObject import RedisObject
  12. from Object.ResponseObject import ResponseObject
  13. import redis
  14. class InitView(View):
  15. def get(self, request, *args, **kwargs):
  16. request.encoding = 'utf-8'
  17. operation = kwargs.get('operation')
  18. return self.validation(request.GET, operation)
  19. def post(self, request, *args, **kwargs):
  20. request.encoding = 'utf-8'
  21. operation = kwargs.get('operation')
  22. return self.validation(request.POST, operation)
  23. def validation(self, request_dict, operation):
  24. if operation == 'health-check': # 负载均衡器健康检测接口
  25. return self.health_check(request_dict)
  26. elif operation == 'oci_redis_test':
  27. return self.oci_redis_test(request_dict)
  28. elif operation == 'oci_redis_test_2':
  29. return self.oci_redis_test_2(request_dict)
  30. @staticmethod
  31. def health_check(request_dict):
  32. try:
  33. redis_obj = RedisObject()
  34. redis_obj.set_data('health_check', 1)
  35. response = ResponseObject()
  36. Device_Info.objects.filter().values('id').first()
  37. SceneLog.objects.filter().values('id').first()
  38. return response.json(0)
  39. except Exception as e:
  40. return HttpResponse(repr(e), status=500)
  41. @staticmethod
  42. def oci_redis_test(request_dict):
  43. try:
  44. key = request_dict.get('key', None)
  45. value = request_dict.get('value', None)
  46. response = ResponseObject()
  47. redis_host = 'amaaaaaayszequiamxr7cdpparig3ptmytvde5vvnz6n7gceo4232sbhhlsa-p.redis.us-phoenix-1.oci.oraclecloud.com'
  48. # 创建Redis连接
  49. pool = redis.ConnectionPool(connection_class=SSLConnection, host=redis_host, port=6379, db=0)
  50. # redis_client = redis.Redis(connection_pool=pool, ssl=True, ssl_cert_reqs=None)
  51. redis_client = redis.StrictRedis(
  52. connection_pool=pool,
  53. host=redis_host,
  54. ssl=True,
  55. ssl_cert_reqs=None
  56. )
  57. pipe = redis_client.pipeline()
  58. pipe.set(key, value, 60)
  59. pipe.execute()
  60. redis_r_obj = RedisObject(mode='r')
  61. redis_value = redis_r_obj.get_data(key)
  62. redis_r_obj.CONN.close()
  63. res = {
  64. 'redis_value': redis_value
  65. }
  66. return response.json(0, res)
  67. except Exception as e:
  68. return HttpResponse(repr(e), status=500)
  69. @staticmethod
  70. def oci_redis_test_2(request_dict):
  71. try:
  72. redis_obj = RedisObject()
  73. pipe = redis_obj.CONN.pipeline()
  74. response = ResponseObject()
  75. equipment_info_kwargs = {
  76. 'device_user_id': '163417566733313800138000',
  77. 'event_time': int(time.time()),
  78. 'event_type': 0,
  79. 'device_uid': 'H47UZJ7PHY2NXKNW111A',
  80. 'device_nick_name': 'redis_test',
  81. 'channel': 1,
  82. 'alarm': 'Motion',
  83. 'is_st': 0,
  84. 'add_time': int(time.time()),
  85. 'storage_location': 1,
  86. 'event_tag': '',
  87. 'answer_status': 0
  88. }
  89. # 保存到redis列表
  90. equipment_info_value = json.dumps(equipment_info_kwargs)
  91. equipment_info_key = 'equipment_info'
  92. pipe.rpush(equipment_info_key, equipment_info_value)
  93. pipe.rpush(equipment_info_key, equipment_info_value)
  94. pipe.execute()
  95. redis_r_obj = RedisObject(mode='r')
  96. equipment_info_redis_list = redis_r_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)