nacos_config.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import json
  2. from flask import Flask, request
  3. from nacos import NacosClient
  4. app = Flask(__name__)
  5. config_json = {
  6. "local": {
  7. "address": "192.168.3.80:8848",
  8. "namespace": "dev",
  9. "username": "nacos",
  10. "password": "nacos",
  11. "data_id": "python-mendunr",
  12. "group": "DEFAULT_GROUP"
  13. },
  14. "production": {
  15. "address": "localhost:8848",
  16. "namespace": "dev",
  17. "username": "nacos",
  18. "password": "nacos",
  19. "data_id": "python-mendunr",
  20. "group": "DEFAULT_GROUP"
  21. }
  22. }
  23. class NacosConfig:
  24. def __init__(self, environment='local'):
  25. env_config = config_json[environment]
  26. self.SERVER_ADDRESSES = env_config['address']
  27. self.NAMESPACE = env_config['namespace']
  28. self.USERNAME = env_config['username']
  29. self.PASSWORD = env_config['password']
  30. self.data_id = env_config['data_id']
  31. self.group = env_config['group']
  32. self.client = NacosClient(server_addresses=self.SERVER_ADDRESSES, namespace=self.NAMESPACE,
  33. username=self.USERNAME, password=self.PASSWORD)
  34. self.config_data = None
  35. def load_config(self):
  36. """从Nacos加载配置"""
  37. config_str = self.client.get_config(data_id=self.data_id, group=self.group)
  38. self.config_data = json.loads(config_str) if config_str else {}
  39. return self.config_data
  40. def get_config(self):
  41. """返回当前加载的配置数据"""
  42. if self.config_data is None:
  43. self.load_config()
  44. return self.config_data
  45. # 使用配置文件中的生产环境配置 (本地是local,提交代码是production)!!
  46. nacos_config = NacosConfig(environment='production')
  47. configs = nacos_config.get_config()
  48. @app.route('/config')
  49. def get_config_route():
  50. """返回当前配置,或者可以选择在这里重新加载配置"""
  51. # 可以在这里选择是否重新加载配置,或者根据需要进行其他逻辑处理
  52. # nacos_config.load_config() # 如果需要每次请求都检查更新,可以取消注释这行代码
  53. return json.dumps(nacos_config.get_config())
  54. if __name__ == '__main__':
  55. app.run(debug=True)