Browse Source

提交代码

yulongyan_citu 1 year ago
parent
commit
84096105de

+ 1 - 1
app.py

@@ -40,7 +40,7 @@ def run_app():
     if plat == 'windows':
         app.run(host='0.0.0.0', port=3333, debug=True, use_reloader=True)
     elif plat == 'linux':
-        app.run(host='0.0.0.0', port=3333, debug=False, processes=3)
+        app.run(host='0.0.0.0', port=3333, debug=False, processes=1)
 
 if __name__ == '__main__':
     run_app()

+ 2 - 2
configs/connections.py

@@ -3,10 +3,10 @@
 '''
 from flask import Flask
 from py2neo import Graph
-from configs.nacos_config import configs
+from configs.nacos_config import nacos_service_single
 from py2neo import Node
 app = Flask(__name__)
-
+configs = nacos_service_single.get_nacos_configs()
 neo4j_url = configs['neo4j_url']
 username = configs['neo4j_username']
 password = configs['neo4j_password']

+ 0 - 17
configs/nacos-data/snapshot/python-mendunr+DEFAULT_GROUP+dev

@@ -1,17 +0,0 @@
-{
-    "MYSQL_HOST":"127.0.0.1",
-    "MYSQL_USER":"root",
-    "MYSQL_PASSWORD":"123456",
-    "MYSQL_PORT":3306,
-    "DATA_BASE":"digitization_data",
-    "FILE_PATH":"/data/excel/data2/团队效能管理平台/模拟数据/",
-    "MINIO_HOST":"192.168.3.86:9000",
-    "MINIO_USER":"root",
-    "MINIO_PASSWORD":"2099citu##$$**.com",
-    "REPORT_FOLDER":"data/report/",
-    "BUCKET":"dev",
-    "neo4j_url":"bolt://192.168.3.86:7687",
-    "neo4j_username":"neo4j",
-    "neo4j_password":"!@#qwe123^&*",
-    "csv_url":"/data/neo4j-community-3.5.28/import"
-}

+ 61 - 0
configs/nacos_bak.py

@@ -0,0 +1,61 @@
+import json
+import platform
+from flask import Flask
+from nacos import NacosClient
+app = Flask(__name__)
+
+config_json = {
+    "local": {
+        "address": "192.168.3.80:8848",
+        "namespace": "dev",
+        "username": "nacos",
+        "password": "nacos",
+        "data_id": "python-mendunr",
+        "group": "DEFAULT_GROUP"
+    },
+    "production": {
+        "address": "127.0.0.1:8848",
+        "namespace": "dev",
+        "username": "nacos",
+        "password": "2099citu##$$**.com",
+        "data_id": "python-mendunr",
+        "group": "DEFAULT_GROUP"
+    }
+}
+
+
+class NacosConfig:
+    def __init__(self, environment='local'):
+        env_config = config_json[environment]
+        self.SERVER_ADDRESSES = env_config['address']
+        self.NAMESPACE = env_config['namespace']
+        self.USERNAME = env_config['username']
+        self.PASSWORD = env_config['password']
+        self.data_id = env_config['data_id']
+        self.group = env_config['group']
+        self.client = NacosClient(server_addresses=self.SERVER_ADDRESSES, namespace=self.NAMESPACE,
+                                  username=self.USERNAME, password=self.PASSWORD)
+        self.config_data = None
+
+    def load_config(self):
+        """从Nacos加载配置"""
+        config_str = self.client.get_config(data_id=self.data_id, group=self.group)
+        self.config_data = json.loads(config_str) if config_str else {}
+        return self.config_data
+
+    def get_config(self):
+        """返回当前加载的配置数据"""
+        if self.config_data is None:
+            self.load_config()
+        return self.config_data
+
+
+# 根据操作系统选择环境
+plat = platform.system().lower()
+environment = 'local' if plat == 'windows' else 'production'
+nacos_config = NacosConfig(environment=environment)
+configs = nacos_config.get_config()
+
+
+if __name__ == '__main__':
+    app.run(debug=True)

+ 121 - 58
configs/nacos_config.py

@@ -1,71 +1,134 @@
-import json
-import platform
-from flask import Flask
-from nacos import NacosClient
+import nacos
+import socket
+from threading import Timer
+import logging
+import time
+import os
+import requests
 
-app = Flask(__name__)
 
-config_json = {
-    "local": {
-        "address": "192.168.3.80:8848",
-        "namespace": "dev",
-        "username": "nacos",
-        "password": "nacos",
-        "data_id": "python-mendunr",
-        "group": "DEFAULT_GROUP"
-    },
-    "production": {
-        "address": "127.0.0.1:8848",
-        "namespace": "dev",
-        "username": "nacos",
-        "password": "2099citu##$$**.com",
-        "data_id": "python-mendunr",
-        "group": "DEFAULT_GROUP"
-    }
-}
+class nacos_service:
+    CLIENT = None
+    DATA_ID = None
+    GROUP = None
+    LOCAL_IP = None
+    SERVER_ADDRESSES = None
+    NAMESPACE = None
+    logger = logging.getLogger('app')  # 这里设置名字
+
+    __instance = None
 
+    def __init__(self):
+        self.LOCAL_IP = str(os.getenv(key="NACOS_REGISTER_IP", default=socket.gethostbyname(socket.gethostname())))
+        self.SERVER_ADDRESSES = str(os.getenv(key="NACOS_SERVER_ADDRESS", default="http://192.168.3.80:8848"))
+        self.NAMESPACE = str(os.getenv(key="NACOS_NAME_SPACE", default="dev"))
+        self.DATA_ID = str(os.getenv(key="NACOS_DATA_ID", default="python-mendunr"))
+        self.GROUP = str(os.getenv(key="DEFAULT_GROUP", default="DEFAULT_GROUP"))
+        self.logger.info("启动参数: %s", {
+            "IP": self.LOCAL_IP,
+            "SERVER_ADDRESSES": self.SERVER_ADDRESSES,
+            "NAMESPACE": self.NAMESPACE,
+            "DATA_ID": self.DATA_ID,
+            "nacosGroup": self.GROUP}
+                         )
 
-class NacosConfig:
-    def __init__(self, environment='local'):
-        env_config = config_json[environment]
-        self.SERVER_ADDRESSES = env_config['address']
-        self.NAMESPACE = env_config['namespace']
-        self.USERNAME = env_config['username']
-        self.PASSWORD = env_config['password']
-        self.data_id = env_config['data_id']
-        self.group = env_config['group']
-        self.client = NacosClient(server_addresses=self.SERVER_ADDRESSES, namespace=self.NAMESPACE,
-                                  username=self.USERNAME, password=self.PASSWORD)
-        self.config_data = None
+    def __new__(cls, *args, **kwargs):
+        if nacos_service.__instance is None:
+            nacos_service.__instance = object.__new__(cls, *args, **kwargs)
+        return nacos_service.__instance
 
-    def load_config(self):
-        """从Nacos加载配置"""
-        config_str = self.client.get_config(data_id=self.data_id, group=self.group)
-        self.config_data = json.loads(config_str) if config_str else {}
-        return self.config_data
+    ### 获取配置
+    def getConfig(self):
+        return self.CLIENT.get_config(self.DATA_ID, self.GROUP)
 
-    def get_config(self):
-        """返回当前加载的配置数据"""
-        if self.config_data is None:
-            self.load_config()
-        return self.config_data
+    ### 注册实例
+    def register_instance(self):
+        self.logger.info("注册nacos实例  分组: %s ", self.GROUP)
+        self.logger.info("注册nacos实例  时间: %s ", time.strftime('%H:%M:%S', time.localtime(time.time())))
+        res = requests.post(url=self.SERVER_ADDRESSES + "/nacos/v1/ns/instance",
+                            data={
+                                'groupName': self.GROUP,
+                                'metadata': '{"preserved.register.source":"SPRING_CLOUD","preserved.heart.beat.interval": 5500, "preserved.heart.beat.timeout": 30000, "preserved.ip.delete.timeout": 60000}',
+                                'namespaceId': self.NAMESPACE,
+                                'port': 3333,
+                                'enable': True,
+                                'healthy': True,
+                                'clusterName': 'DEFAULT',
+                                'ip': self.LOCAL_IP,
+                                'weight': 1,
+                                'ephemeral': True,
+                                'serviceName': self.GROUP + "@@" + self.DATA_ID
+                            })
+        self.logger.info("register_instance res %s", str(res.content, 'UTF-8'))
+    def send_heartbeat(self):
+        try:
+            res = requests.put(url=self.SERVER_ADDRESSES + "/nacos/v1/ns/instance/beat",
+                               data={
+                                   "ip": self.LOCAL_IP,
+                                   "port": "3333",
+                                   "namespaceId": self.NAMESPACE,
+                                   "serviceName": self.GROUP + "@@" + self.DATA_ID,
+                                   # "groupName":self.GROUP,
+                                   "clusterName": "DEFAULT"}
+                               ).json()
+            if res["code"] == 20404:  ### 找不到资源重新注册
+                self.register_instance()
+                # continue
+            # time.sleep(4)
+            t = Timer(4, self.send_heartbeat)  ## 2秒执行一次
+            t.start()
+        except Exception as e:
+            print(e)
 
+    def getServer(self, serverName):
+        res = requests.get(url=self.SERVER_ADDRESSES + "/nacos/v1/ns/instance/list",
+                           params={'namespaceId': self.NAMESPACE, 'serviceName': self.GROUP + "@@" + serverName})
+        hosts = res.json()["hosts"]
+        if len(hosts) > 0:
+            return hosts[0]
+        return None
 
+    def start(self):
+        try:
+            self.logger.info("启动参数: %s", {
+                "IP": self.LOCAL_IP,
+                "SERVER_ADDRESSES": self.SERVER_ADDRESSES,
+                "NAMESPACE": self.NAMESPACE,
+                "DATA_ID": self.DATA_ID,
+                "nacosGroup": self.GROUP}
+                             )
+            self.CLIENT = nacos.NacosClient(self.SERVER_ADDRESSES, namespace=self.NAMESPACE)
+            self.register_instance()
+            self.send_heartbeat()
+        except Exception as e:
+            print(e)
 
-# 根据操作系统选择环境
-plat = platform.system().lower()
-environment = 'local' if plat == 'windows' else 'production'
-nacos_config = NacosConfig(environment=environment)
-configs = nacos_config.get_config()
+    def get_nacos_configs(self):
+        url = self.SERVER_ADDRESSES + "/nacos/v1/cs/configs"
+        params = {
+            'tenant': self.NAMESPACE,
+            'dataId': self.DATA_ID,
+            'group': self.GROUP
+        }
+        r = requests.get(url, params)
+        r.encoding = r.apparent_encoding
+        r_dict = r.json()
+        return r_dict
 
 
-@app.route('/config')
-def get_config_route():
-    """返回当前配置,或者可以选择在这里重新加载配置"""
-    # 可以在这里选择是否重新加载配置,或者根据需要进行其他逻辑处理
-    # nacos_config.load_config()  # 如果需要每次请求都检查更新,可以取消注释这行代码
-    return json.dumps(nacos_config.get_config())
+nacos_service_single = nacos_service()
 
 
-if __name__ == '__main__':
-    app.run(debug=True)
+# 发送url请求,获取nacos上的配置
+def get_nacos_configs():
+    url = nacos_service_single.SERVER_ADDRESSES + "/nacos/v1/cs/configs"
+    params = {
+        'tenant': nacos_service_single.NAMESPACE,
+        'dataId': nacos_service_single.DATA_ID,
+        'group': nacos_service_single.GROUP
+    }
+    r = requests.get(url, params)
+    r.encoding = r.apparent_encoding
+    r_dict = r.json()
+    return r_dict
+

+ 0 - 17
nacos-data/snapshot/python-mendunr+DEFAULT_GROUP+dev

@@ -1,17 +0,0 @@
-{
-    "MYSQL_HOST":"127.0.0.1",
-    "MYSQL_USER":"root",
-    "MYSQL_PASSWORD":"123456",
-    "MYSQL_PORT":3306,
-    "DATA_BASE":"digitization_data",
-    "FILE_PATH":"/data/excel/data2/团队效能管理平台/模拟数据/",
-    "MINIO_HOST":"192.168.3.86:9000",
-    "MINIO_USER":"root",
-    "MINIO_PASSWORD":"2099citu##$$**.com",
-    "REPORT_FOLDER":"data/report/",
-    "BUCKET":"dev",
-    "neo4j_url":"bolt://192.168.3.86:7687",
-    "neo4j_username":"neo4j",
-    "neo4j_password":"!@#qwe123^&*",
-    "csv_url":"/data/neo4j-community-3.5.28/import"
-}