找回密码
 会员注册
查看: 28|回复: 0

PythonPython注册微服务到nacos

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
69864
发表于 2024-9-5 13:04:45 | 显示全部楼层 |阅读模式
Python注册微服务到Nacos1.Nacos部署github的nacos项目的发布页(Releases·alibaba/nacos·GitHub),选择所要下载的nacos版本,在nacos下方的assets中选择安装包进行下载。解压nacos安装包到指定目录。tar-zxvfnacos-server-2.0.3.tar.gz初始化Nacos数据库。--需要先选择数据库--初始化sql脚本位于解压的nacos/conf目录下usenacosdb;source/euansu/apps/nacos/conf/nacos-mysql.sql;修改nacos配置文件。#nacos/conf/application.properties#默认的web路由server.servlet.contextPath=/nacos#web服务端口server.port=8848#数据库配置db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user.0=nacosdb.password.0=nacos启动Nacos服务,这里只是以单机模式启动Nacos。bin/startup.sh-mstandalone启动完成之后,访问页面进行验证。如果没有在配置文件中修改密码,这里的用户名和密码是:nacos/nacos,直接登录即可。2.Nacos验证Nacos注册接口(注册一个实例服务到Naocs上)请求地址:/nacos/v1/ns/instance请求方式:POST请求参数:名称类型是否必选描述ip字符串是服务实例IPportint是服务实例portnamespaceId字符串否命名空间IDweightdouble否权重enabledboolean否是否上线healthyboolean否是否健康metadata字符串否扩展信息clusterName字符串否集群名serviceName字符串是服务名groupName字符串否分组名ephemeralboolean否是否临时实例返回参数:返回代码描述语义400BadRequest客户端请求中的语法错误403Forbidden没有权限404NotFound无法找到资源500InternalServerError服务器内部错误200OK正常请求测试:请求接口后,在Nacos页面出现注册的服务,如下:查看详细信息Nacos服务检测接口:请求地址:/nacos/v1/ns/instance/beat请求方式:PUT请求参数:名称类型是否必选描述serviceName字符串是服务名ip字符串是服务实例IPportint是服务实例PORTnamespaceId字符串否命名空间IDgroupName字符串否分组名ephemeralboolean否是否临时实例beatJSON格式字符串是实例心跳内容响应参数:响应代码描述语义400BadRequest客户端请求中的语法错误403Forbidden没有权限404NotFound无法找到资源500InternalServerError服务器内部错误200OK正常请求测试:将Python服务注册到Nacos上至少需要两个接口,一个是实例注册接口,另一个则是心跳接口,只进行了注册,则会出现如下的情况:时间稍长之后,注册的服务也会消失。因此,需要按照心跳时间请求nacos服务检测接口,默认是5s。3.Python注册Nacos服务Python这里可以通过写一个脚本实现Nacos服务的注册,实现代码如下:importtimeimportrequests​#心跳时间HEARTBEATS_TIME=5#Nacos地址NACOS_URL='http://xx.xx.xx.xx:8848/nacos'#服务注册路由NACOR_REGISTER_URL='v1/ns/instance'#心跳检测路由NACOS_HEARTBEATS_URL='v1/ns/instance/beat'​​#Nacos服务注册defservice_register():  """ Nacos服务注册的接口有以下参数: ip   服务实例IP port 服务实例port namespaceId命名空间ID weight 权重 enabled 是否上线 healthy 是否健康 metadata扩展信息 clusterName集群名 serviceName服务名 groupName分组名 ephemeral是否临时实例 :return: """  #返回参数  result={    "code":200,    "message":"success" }  #构造请求参数  params={    'serviceName':'python-service',    'ip':'xx.xx.xx.xx',    'port':8845 }  response=requests.post(    "{NACOS_URL}/{NACOR_REGISTER_URL}".format(NACOS_URL=NACOS_URL,NACOR_REGISTER_URL=NACOR_REGISTER_URL),    params=params)  ifresponse.status_code!=200:    result["code"]=response.status_code    result["message"]="服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text)    returnresult  ifresponse.text!='ok':    result["code"]=500    result["message"]="服务注册Nacos失败,失败原因:{error_message}".format(error_message=response.text)    returnresult  returnresult​​defservice_beat():  """ 服务心跳,默认是5s一次 :return: nacos的服务心跳接口有以下参数 serviceName服务名 ip   服务实例IP port 服务实例PORT namespaceId命名空间ID groupName分组名 ephemeral是否临时实例 beat 实例心跳内容 """  #构造请求参数  params={    "serviceName":"python-service",    'ip':'xx.xx.xx.xx',    'port':8845 }  whileTrue:    response=requests.put(      "{NACOS_URL}/{NACOS_HEARTBEATS_URL}".format(NACOS_URL=NACOS_URL,NACOS_HEARTBEATS_URL=NACOS_HEARTBEATS_URL),      params=params)    print("已注册服务,执行心跳服务,续期服务响应状态:{status_code}".format(status_code=response.status_code))    time.sleep(HEARTBEATS_TIME)​defmain():  #注册服务  service_register()  #服务检测  service_beat()​​if__name__=='__main__':  main()实现效果:4.参考文档nacos文档:OpenAPI指南
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-7 06:01 , Processed in 0.567801 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表