ToB企服应用市场:ToB评测及商务社交产业平台

标题: python技术简介(三) [打印本页]

作者: 大连全瓷种植牙齿制作中心    时间: 2024-7-19 23:26
标题: python技术简介(三)
python直连etcd以及其应用:在 python 中,有几个库可以用于与 etcd 举行交互,此中最常用的是 etcd3 和 python-etcd。
1、etcd3的介绍
  1. # 安装
  2. pip install etcd3
  3. # 方法
  4. #  连接到 etcd 服务器
  5. etcd3.client(host, port)
  6. # 设置键值
  7. put(key, value)
  8. # 获取键值
  9. get(key)
  10. # 删除键值
  11. delete(key)
  12. # 获取以指定前缀开头的所有键值
  13. get_prefix(prefix)
  14. # 删除以指定前缀开头的所有键值
  15. delete_prefix(prefix)
  16. # 监听键值变化
  17. watch(key)
复制代码
应用场景-服务注册与发现:服务注册是指服务实例在启动时,将本身的网络地址(IP 和端口)注册到服务注册中心(如 etcd)。注册中心维护了一个服务实例的目录,客户端可以通过查询注册中心来发现可用的服务实例。服务发现是指客户端从服务注册中心获取可用的服务实例列表,以便举行哀求路由。当某个服务实例不可用或增加新的实例时,服务注册中心会相应地更新注册信息。
详细业务步骤
我们如今可以利用 etcd3 库,实现来为我们的 my_service 的服务举行服务注册和发现。
  1. import etcd3
  2. import socket
  3. import uuid
  4. def register_service(service_name, host, port):
  5.     etcd = etcd3.client()
  6.     service_id = str(uuid.uuid4())
  7.     key = f'/services/{service_name}/{service_id}'
  8.     value = f'{host}:{port}'
  9.     etcd.put(key, value)
  10.     print(f'Service {service_name} registered with ID {service_id} at {host}:{port}')
  11.     return service_id
  12. def unregister_service(service_name, service_id):
  13.     etcd = etcd3.client()
  14.     key = f'/services/{service_name}/{service_id}'
  15.     etcd.delete(key)
  16.     print(f'Service {service_name} unregistered with ID {service_id}')
  17. # 获取本机IP地址
  18. hostname = socket.gethostname()
  19. host_ip = socket.gethostbyname(hostname)
  20. # 注册服务
  21. service_id = register_service('my_service', host_ip, 8080)
  22. # 停止服务时取消注册
  23. # unregister_service('my_service', service_id)
  24. def discover_services(service_name):
  25.     etcd = etcd3.client()
  26.     instances = etcd.get_prefix(f'/services/{service_name}')
  27.     services = []
  28.     for value, metadata in instances:
  29.         service_info = value.decode('utf-8')
  30.         services.append(service_info)
  31.     return services
  32. # 发现服务
  33. services = discover_services('my_service')
  34. print(f'Discovered services: {services}')
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4