python flask服务如何注册到nacos

简介: 一文讲清楚python flask服务如何注册到nacos

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。
个人IP:shigen

背景

shigen之前遇到了一个服务,需要结合nacos+ Spring security实现服务的负载均衡。其中最为重要的就是python服务自己注册到nacos上,趁着闲暇时间,来研究了一番。

nacos官网中提到了【其它语言的sdk】:

nacos其它语言SDK

点击【python】就跳转到了GitHub。

官网内容

看着好像也没说的很清楚,我们自己来调用SDK实现一下。

代码实现

首先确保nacos服务启动了,shigen这里用的docker-compose的方式启动的:

nacos启动

对应的docker-compose文件如下:

version: '3'
services:
  nacos-standalone:
    image: nacos/nacos-server:v2.1.2-slim
    container_name: nacos-server
    ports:
      - 8848:8848
      - 9848:9848
      - 9849:9849
    environment:
      - 'MODE=standalone'
      - 'TIME_ZONE=Asia/Shanghai'
    volumes:
      - ./conf:/home/nacos/conf
      - ./logs:/home/nacos/logs
      - ./data:/home/nacos/data

代码可以参考shigen的gitee-cloud-patform

首先下载依赖:

pip install nacos-sdk-python

安装依赖

依赖安装完成,就可以继续写代码了,主要是注册上服务和发送心跳。

最开始,shigen尝试了官方的SDK,总是出现异常,最后看了一下官方的描述:

Supported Python version:

Python 2.7 Python 3.6 Python 3.7

Supported Nacos version

Nacos 0.8.0 ~ 1.3.2

好家伙,我忽视了nacos的版本,注意,我的nacos是这样的:nacos/nacos-server:v2.1.2-slim,直接2.0+,不适配。害得我折腾了一下午,最后和伙伴出去跑步了,心里一想,我真是钻牛角尖。服务的注册也不是我的首要任务,实在不行,用官方的API照样可以注册上去。

于是,回来尝试了一下:

import sys
# 用于异步处理心跳检测
import threading
import time
from typing import NoReturn

import requests
from flask import Flask, jsonify, request

app = Flask(__name__)


# 服务注册
def service_register(service_name: str, ip: str, port: int):
    url = f"http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName={service_name}&ip={ip}&port={port}"
    res = requests.post(url)
    print(f"完成注册: {res.status_code}")


# 心跳检测
def service_beat(service_name: str, ip: str, port: int) -> NoReturn:
    while True:
        url = f"http://127.0.0.1:8848/nacos/v1/ns/instance/beat?serviceName={service_name}&ip={ip}&port={port}"
        res = requests.put(url)
        print(f"心跳检测中... 响应状态码: {res.status_code}")
        time.sleep(5)


@app.route('/get_server_info', methods=['GET'])
def get_server_info():
    server_ip = request.host.split(':')[0]
    server_port = request.host.split(':')[1]

    response = {
   
   'ip': server_ip, 'port': server_port}
    return jsonify(response)


if __name__ == '__main__':
    if len(sys.argv) > 1:
        port = int(sys.argv[1])
    else:
        port = 10000
    service_name = 'python-server'
    ip = '127.0.0.1'
    service_register(service_name, ip, port)
    # 5 秒后执行心跳检测
    threading.Timer(5, service_beat(service_name, ip, port)).start()
    app.run()

参考文章:spring boot和flask整合nacos

特意的留了一个命令行参数作为服务的端口号,这样的话,副本数就很好控制了。

控制台操作一下:

服务的启动

注意:服务在第一次启动注册之后,需要不断的对nacos发送心跳,表明服务的存活。

最后实现的效果是这样的:

实现效果

那接下来就是网关层的调用和负载均衡了,这个下期再讲。

与shigen一起,每天不一样!

目录
相关文章
|
1月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
222 77
|
5月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
19天前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
39 0
|
3月前
|
存储 算法 文件存储
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。
|
4月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
1058 14
|
7月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
131 5
|
7月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
356 3
|
3月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
1月前
|
数据采集 安全 BI
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
76 11

推荐镜像

更多