python实现nacos服务注册和HTTP探活

如果使用nacos-sdk-python(注意适用nacos版本),需要按照下面的链接修改源码的bug

https://github.com/nacos-group/nacos-sdk-python/issues/135

代码如下:

import nacos
import threading
import socket
import requests
import json
from flask import Flask

app = Flask(__name__)

class NacosReg:
    def __init__(self):
        self.SERVER_HOST = "127.0.0.1"
        self.SERVER_PORT = 8848
        self.SERVER_ADDRESSES = f"http://{self.SERVER_HOST}:{self.SERVER_PORT}"
        self.SERVICE_NAME = "test_server"
        self.GROUP_NAME = "DEFAULT_GROUP"
        self.username = "nacos"
        self.password = "nacos"
        self.client = nacos.NacosClient(self.SERVER_ADDRESSES, username=self.username, password=self.password)
        self.model_port = 8000

    def get_host_ip(self):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect((self.SERVER_HOST, self.SERVER_PORT))
            ip = s.getsockname()[0]
        finally:
            s.close()
        return ip

    def service_register_and_check(self):
        self.service_register_()
        self.set_http_check()

    def service_register(self):
        self.client.add_naming_instance(self.SERVICE_NAME,
                                        self.get_host_ip(),
                                        self.model_port, ephemeral=False, group_name=self.GROUP_NAME)

    def service_register_(self):
        params = {
            "ip": self.get_host_ip(),
            "port": self.model_port,
            "serviceName": self.SERVICE_NAME,
            "weight": 1.0,
            "enable": True,
            "healthy": True,
            "clusterName": "None",
            "ephemeral": False,
            "groupName": self.GROUP_NAME,
            'username': self.username,
            'password': self.password
        }
        res = requests.post(f"{self.SERVER_ADDRESSES}/nacos/v1/ns/instance", params=params)
        print(res.text)

    def service_unregister(self):
        self.client.remove_naming_instance(self.SERVICE_NAME,
                                           self.get_host_ip(),
                                           self.model_port, ephemeral=False, group_name=self.GROUP_NAME)

    def set_http_check(self):
        data = {
            "serviceName": f"{self.GROUP_NAME}@@{self.SERVICE_NAME}",
            "clusterName": "None",
            "checkPort": 80,
            "useInstancePort4Check": True,
            "healthChecker": json.dumps({"type": "HTTP", "path": "/test"}),
            "namespaceId": ""
        }
        res = requests.put(f"{self.SERVER_ADDRESSES}/nacos/v1/ns/cluster",
                           params={'username': self.username, 'password': self.password}, data=data)
        print(res.text)

    def service_list(self):
        return self.client.list_naming_instance(self.SERVICE_NAME, healthy_only=True)

@app.route("/test", methods=['GET'])
def test():
    return "ok"

if __name__ == '__main__':
    threading.Timer(1, NacosReg().service_register_and_check).start()
    app.run(port=8000)

服务器运行情况:

nacos服务器情况:

HTTP探活配置-- 单击上图集群配置:

参考资料:

 GitHub - nacos-group/nacos-sdk-python: nacos python sdk

Open API 指南 | Nacos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/638092.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

群晖搭建网页版Linux Ubuntu系统并实现远程访问

文章目录 1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 docker-webtop是一个基于Docker的Web桌面应用,它允许用户通过浏览器远…

[图解]产品经理创新模式02改善信息流转

1 00:00:02,160 --> 00:00:04,000 第二种改进模式 2 00:00:04,010 --> 00:00:06,340 就是改善信息流转 3 00:00:06,550 --> 00:00:08,000 它是这样的 4 00:00:09,250 --> 00:00:11,290 当电脑系统越来越多的时候 5 00:00:11,300 --> 00:00:12,530 就会出现这…

LeetCode刷题之HOT100之汉明距离

大家晚上好啊,今天几乎啥也没干,上个课就耽误了一下午,晚上来了积极性也不高,先完成今天的题目吧,请看题: 1、题目描述 2、逻辑分析 没有遇到过这种题目,想不出来有什么解法,看题解…

Transormer(1)-结构解读

Transormer块主要由四个部分组成,注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义,它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

实战Java虚拟机-实战篇

一、内存调优 1.内存溢出和内存泄漏 内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大…

Oracle EBS Interface/API(55)- AR收款核销

快速参考 参考点内容功能导航N: AR->收款->收款并发请求None基表AR.AR_RECEIVABLE_APPLICATIONS_ALLAPI参考下面介绍错误信息表None接口FormNone接口RequestNoneDebug ProfileNone详细例子参考如下实例官方文档None数据验证包None标准界面 Path: AR->收款->收款 …

漫谈企业信息化安全 - 勒索软件攻击

一、引言 首先,网络攻击是一个非常广泛的话题,网络攻击从一般分类上包含了恶意软件攻击、钓鱼攻击、拒绝服务攻击(DoS/DDoS)、中间人攻击、SQL注入、跨站脚本、0-Day攻击、供应链攻击、密码攻击等等,勒索软件攻击只是…

【永洪BI】传参组件

1. 参数 参数也叫做变量。永洪中,支持参数的地方很多,几乎涉及整个永洪产品,用起来非常灵活,而且具有强大的能力,可用于各种需要动态改变值的场景。数据源、数据集、报表、实验都可以定义和使用参数,比如在…

爬虫技术升级:如何结合DrissionPage和Auth代理插件实现数据采集

背景/引言 在大数据时代,网络爬虫技术已经成为数据收集的重要手段之一。爬虫技术可以自动化地从互联网上收集数据,节省大量人力和时间成本。然而,当使用需要身份验证的代理服务器时,许多现有的爬虫框架并不直接支持代理认证。这就…

5.1网安学习第五阶段第一周回顾(个人学习记录使用)

本周重点 ①日志检测与HIDS系统 ②Wazuh的应用 ③Wazuh配合syslog的应用 ④Wazuh配置邮箱预警 ⑤Wazuh与Elastic整合 ⑥Wazuh检测木马与配置 ⑦各类日志分析工具(详见笔记) 本周主要内容 ①日志检测与HIDS系统 一、安全服务工程师岗位职责 网络安全服务工程师的职责主…

【Sync FIFO介绍及基于Verilog的实现】

Sync FIFO介绍及实现 1 Intro2 Achieve2.1 DFD2.2 Intf2.3 Module 本篇博客介绍无论是编码过程中经常用到的逻辑–FIFO;该FIFO是基于单时钟下的同步FIFO; FiFO分类:同步FiFO VS 异步FiFO; 1 Intro FIFO可以自己实现,但…

mysqldump提示Using a password on the command line interface can be insecured的解决办法

mysql数据库备份一句话执行命令 mysqldump --all-databases -h127.0.0.1 -uroot -p123456 > allbackupfile.sql 提示如下提示 [rootyfvyy5b2on3knb8q opt]# mysqldump --all-databases -h127.0.0.1 > allbackupfile.sql mysqldump: Couldnt execute SELECT COLUMN_NA…

Unity Miscellaneous入门

概述 在Unity中有非常多好用的组件,也是Unity为我们提供的方便的开发工具,它的功能可能不是主流的内容,比如渲染,音乐,视频等等,所有Unity把这些内容统一归到了一个杂项文件组中。 Unity组件入门篇总目录-…

[AI Google] 10个即将到来的Android生态系统更新

新的体验带来了更强的防盗保护、手表电池寿命优化,以及对电视、汽车等的娱乐功能改进。 昨天,我们分享了Android如何以人工智能为核心重新构想智能手机。今天,我们推出了Android 15的第二个测试版,并分享了更多我们改进操作系统的…

经纬恒润第三代重载自动驾驶平板车

随着无人驾驶在封闭场地和干线道路场景的加速落地,港口作为无人化运营的先行者,其场景的复杂度、特殊性对无人化运营的技术提出了各种挑战。经纬恒润作为无人驾驶解决方案提供商,见证了港口在无人化运营方面的尝试及发展,并深度参…

elementUI使用el-tabs加el-form导致页面崩溃以及el-form里的input事件丢失问题

elementUI使用el-tabs加el-form导致页面崩溃以及el-form里的input事件丢失问题 解决 el-form外面包一层el-row和el-col,el-tabs也包一层 el-fom e-tabs

《基于Jmeter的性能测试框架搭建》改进一

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…

设计模式使用(成本扣除)

前言 名词解释 基础名词 订单金额:用户下单时支付的金额,这个最好理解 产品分成:也就是跟其他人合做以后我方能分到的金额,举个例子,比如用户订单金额是 100 块,我方的分成是 80%,那么也就是…

《Fundamentals of Power Electronics》——开关电源环路稳定性分析(下)

第二步:我们把控制到输出传递函数的波特图画出来,此时有相位和增益; 第三步:我们已经掌握了一个电源要稳定需要什么样的稳定性条件;