python 使用etcd进行分布式工作

lijunliang 27c2a331db first commit 1 year ago
__pycache__ 27c2a331db first commit 1 year ago
README.md 27c2a331db first commit 1 year ago
__init__.py 27c2a331db first commit 1 year ago
client.py 27c2a331db first commit 1 year ago
requement.txt 27c2a331db first commit 1 year ago
server.py 27c2a331db first commit 1 year ago

README.md

一、服务介绍

本服务是基于etcd实现的微服务封装的python包, 包含服务注册、服务发现、服务调用等功能

二、server服务配置参数说明

ServerConfig = {
"etcd_server": { # etcd 服务配置

"host": parse_args.center_host,
"port": parse_args.center_port, },


"service_prefix": parse_args.service_name, # 服务前缀
"server_host": parse_args.server_host, # 服务地址
"server_port": parse_args.server_port, # 服务端口
"ttl":10, # 租约时长
"lease_frequency": 0.5 # 续租频率必须小于1。续租间隔时长: ttl*lease_frequency

}
使用说明:

```@etcd_server.etcd_server

def start_service():

server = grpc.server(ThreadPoolExecutor(max_workers=ServerConfig.get("maxPool")))
keyword_pb2_grpc.add_EnjoyAnalyseServicer_to_server(EnjoyRecommend(), server)
server.add_insecure_port("[::]:{}".format(ServerConfig.get("server_port")))
server.start()
try:
    while True:
        time.sleep(5)
except KeyboardInterrupt:
    etcd_server.destroy()
    server.stop(0)```

通过装饰器进行使用

三、client调用端配置说明

ClientConfig = { "etcd_server": { # etcd 服务配置

"host": parse_args.center_host,
"port": parse_args.center_port, },

"service_prefix": parse_args.service_name, # 服务前缀 "retries":5, # 获取ip失败重试次数,默认值 5 "refresh_time":1, # 获取IP重试时间间隔,默认值 1 "timeout":1*5+1, # 请求超时,默认值 retries*refresh_time+1 }

```etcd_client = EtcdClient(**server_config) @etcd_client.start def connect(*args, **kwargs):

param, host = args
print(param, host)
with grpc.insecure_channel(host) as channel:
    stub = keyword_pb2_grpc.EnjoyAnalyseStub(channel)
    response_result = stub.Analyse(keyword_pb2.RequestWord(keyWord=param, minScore=3.0))
    result = response_result.recommendWords
    status = response_result.status
    return {"result": result, "status": status}```

三、通过装饰器使用

1、etcd_client.start 针对单个线程调用

传参数:

param=xxxx

函数获取参数:param, host = args host="400" 无服务报错编码 param=None 传参为空

2、etcd_client.start_patch(thread_number=5) 针对多线程调用

传参数:

params=[xxx,xxx,xxx]

函数获取参数:param, host = args host="400" 无服务报错编码 param=None 传参为空