python使用服务注册和发现的说明,本人对python理解有限,不好封装sdk,熟悉的人自行封装,下面简单说一下接入的步骤
1.下载py-consul
pip3 install py-consul
以flask web框架为例
- # import imp
- import consul
- import uuid
-
- from flask import Flask
- import random
- import socket
-
- class Consul(object):
- ip_list = ["172.x.x.x", "172.x.x.x", "172.x.x.x"]
- port = 8506
- service_id = ""
- name = ""
- def __init__(self):
- '''初始化,连接consul服务器'''
- ip = random.choice(self.ip_list)
- '''宿主机ip转int,然后取模len(ip_list)当下标,从ip_list取一个consul client的地址。
- 这样是每台机器固定往一个client上注册
- '''
- self._consul = consul.Consul(ip, self.port)
-
- def RegisterService(self, name, host, port, tags=None):
- tags = tags or []
- # 注册服务
- self.service_id = name + "-" + ip + "-" + str(port)
- self.name = name
- self._consul.agent.service.register(
- name,
- self.service_id,
- host,
- port,
- tags,
- check=consul.Check.http("http://{0}:{1}/health".format(host, port), "5s", "3s", "20s"),
- )
- def UnregisterService(self):
- self._consul.agent.service.deregister(self.service_id)
-
- # 获取要访问的服务的url
- def GetServiceUrl(name, path):
- return "http://x.com/" + name + path
-
-
- app = Flask(__name__)
-
-
- #健康检查,必须
- @app.ro