nacos_bak.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # import nacos
  2. # import socket
  3. # import logging
  4. # import time
  5. # import os
  6. # import requests
  7. # import threading
  8. #
  9. # class NacosService:
  10. # CLIENT = None
  11. # DATA_ID = None
  12. # GROUP = None
  13. # LOCAL_IP = None
  14. # SERVER_ADDRESSES = None
  15. # NAMESPACE = None
  16. # logger = logging.getLogger('app') # 这里设置名字
  17. #
  18. # __instance = None
  19. # _registered = False # 添加注册标志位
  20. # _stop_event = threading.Event() # 用于控制心跳任务的停止
  21. #
  22. # def __init__(self):
  23. # if os.name == 'posix': # 'posix' 表示类Unix系统,包括Linux
  24. # default_address = "127.0.0.1:8848"
  25. # else:
  26. # default_address = "192.168.3.80:8848"
  27. # self.LOCAL_IP = str(os.getenv("NACOS_REGISTER_IP", default=socket.gethostbyname(socket.gethostname())))
  28. # self.SERVER_ADDRESSES = default_address
  29. # self.NAMESPACE = "dev"
  30. # self.DATA_ID = "python-mendunr"
  31. # self.GROUP = "DEFAULT_GROUP"
  32. #
  33. # def __new__(cls, *args, **kwargs):
  34. # if NacosService.__instance is None:
  35. # NacosService.__instance = object.__new__(cls, *args, **kwargs)
  36. # return NacosService.__instance
  37. #
  38. # ### 获取配置
  39. # def getConfig(self):
  40. # return self.CLIENT.get_config(self.DATA_ID, self.GROUP)
  41. #
  42. # ### 注册实例
  43. # def register_instance(self):
  44. # if self._registered:
  45. # return
  46. #
  47. # res = requests.post(url=f"http://{self.SERVER_ADDRESSES}/nacos/v1/ns/instance",
  48. # data={
  49. # 'groupName': self.GROUP,
  50. # 'metadata': '{"preserved.register.source":"SPRING_CLOUD","preserved.heart.beat.interval": 5500, "preserved.heart.beat.timeout": 30000, "preserved.ip.delete.timeout": 60000}',
  51. # 'namespaceId': self.NAMESPACE,
  52. # 'port': 3333,
  53. # 'enable': True,
  54. # 'healthy': True,
  55. # 'clusterName': 'DEFAULT',
  56. # 'ip': self.LOCAL_IP,
  57. # 'weight': 1,
  58. # 'ephemeral': False, # 修改这里为 False
  59. # 'serviceName': self.GROUP + "@@" + self.DATA_ID
  60. # })
  61. # if res.status_code == 200:
  62. # self.logger.info("register_instance res %s", str(res.content, 'UTF-8'))
  63. # self._registered = True # 设置注册成功标志位
  64. # else:
  65. # self.logger.error(f"Failed to register instance: {res.status_code} - {res.text}")
  66. #
  67. # def send_heartbeat(self):
  68. # while not self._stop_event.is_set():
  69. # try:
  70. # res = requests.put(url=f"http://{self.SERVER_ADDRESSES}/nacos/v1/ns/instance/beat",
  71. # data={
  72. # "ip": self.LOCAL_IP,
  73. # "port": "3333",
  74. # "namespaceId": self.NAMESPACE,
  75. # "serviceName": self.GROUP + "@@" + self.DATA_ID,
  76. # "clusterName": "DEFAULT"}
  77. # )
  78. # if res.status_code == 200:
  79. # res_json = res.json()
  80. # if res_json["code"] == 20404: ### 找不到资源重新注册
  81. # self.register_instance()
  82. # else:
  83. # self.logger.error(f"Failed to send heartbeat: {res.status_code} - {res.text}")
  84. # self._stop_event.wait(4) ## 4秒执行一次
  85. # except Exception as e:
  86. # self.logger.error(f"send_heartbeat error: {e}")
  87. #
  88. # def getServer(self, serverName):
  89. # try:
  90. # res = requests.get(url=f"http://{self.SERVER_ADDRESSES}/nacos/v1/ns/instance/list",
  91. # params={'namespaceId': self.NAMESPACE, 'serviceName': self.GROUP + "@@" + serverName})
  92. # if res.status_code == 200:
  93. # hosts = res.json()["hosts"]
  94. # if len(hosts) > 0:
  95. # return hosts[0]
  96. # else:
  97. # self.logger.error(f"Failed to get server list: {res.status_code} - {res.text}")
  98. # except Exception as e:
  99. # self.logger.error(f"getServer error: {e}")
  100. # return None
  101. #
  102. # def start(self):
  103. # try:
  104. # self.CLIENT = nacos.NacosClient(self.SERVER_ADDRESSES, namespace=self.NAMESPACE)
  105. # self.register_instance()
  106. # self.heartbeat_thread = threading.Thread(target=self.send_heartbeat)
  107. # self.heartbeat_thread.start()
  108. # except Exception as e:
  109. # self.logger.error(f"start error: {e}")
  110. #
  111. # def stop(self):
  112. # self._stop_event.set()
  113. # self.heartbeat_thread.join()
  114. #
  115. # def get_nacos_configs(self):
  116. # url = f"http://{self.SERVER_ADDRESSES}/nacos/v1/cs/configs"
  117. # params = {
  118. # 'tenant': self.NAMESPACE,
  119. # 'dataId': self.DATA_ID,
  120. # 'group': self.GROUP
  121. # }
  122. # try:
  123. # r = requests.get(url, params)
  124. # r.encoding = r.apparent_encoding
  125. # if r.status_code == 200:
  126. # r_dict = r.json()
  127. # return r_dict
  128. # else:
  129. # self.logger.error(f"Failed to get Nacos configs: {r.status_code} - {r.text}")
  130. # except Exception as e:
  131. # self.logger.error(f"get_nacos_configs error: {e}")
  132. # return None
  133. #
  134. #
  135. # nacos_service_single = NacosService()
  136. #
  137. #
  138. # # 发送url请求,获取nacos上的配置
  139. # def get_nacos_configs():
  140. # return nacos_service_single.get_nacos_configs()