FastAPI应用加入Nacos

这篇博客介绍了如何使用FastAPI替代Java进行SAP通信,通过微服务注册到Nacos,并提供了一个示例展示如何设置定时任务。博主分享了在FastAPI中配置SAP Web Service和Nacos服务发现的实践经验,强调了时区设置和组名一致性的重要性,以及快速实现该项目的效率优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有个项目需要与sap通讯  采用了web service,

为了方便通讯 放弃了java的请求,直接用Fastapi 实现

import nacos
import uvicorn
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from suds.client import Client
from suds.transport.https import HttpAuthenticated

client=nacos.NacosClient('172.16.244.200:8848',namespace='8b6f08b7-b09c-4181-bcac-1505fba5e1aa')

async def beat():
    client.add_naming_instance('fastapi-service','172.16.244.10',8000,group_name='dev')
    
 
# 微服务注册nacos
def register_nacos():
    client.add_naming_instance('fastapi-service','172.16.244.10',8000,group_name='dev')

 
app=FastAPI()
 
# 微服务注册
register_nacos()

 
@app.on_event('startup')
def init_scheduler():
 
    scheduler = AsyncIOScheduler(timezone="Asia/Shanghai")
    scheduler.add_job(beat, 'interval', seconds=5)
    scheduler.start()

@app.get('/sap/materials')
async def sap_materials():
   ''' 功能实现'''
  return JSONResponse({'code':1000,'msg':'succ','data':data},status_code=200)

需要注意的几点

group_name要与其他java微服务配置要一致 写的不正确 spring cloud gateway 提示404错误

timezone='Asia/Shangai'  不加启动时会提示时区用utc

 调用结果

 从效率上看fastapi从开发到部署花了1天时间解决问题

### 回答1: Nacos 2.2版本提供了一种灵活的鉴权配置方式,可以通过以下步骤进行配置: 1. 首先,确保你已经部署了 Nacos 2.2 版本,并且已经成功运行。 2. 在 Nacos 的配置文件中,找到 auth.enabled 参数,将其设置为 true,以启用鉴权功能。默认情况下,该参数是关闭的。 3. 在配置文件中,找到 auth.common-auth.type 参数,并选择一种适合你的鉴权方式进行设置。Nacos 2.2版本支持多种鉴权方式,包括用户名/密码鉴权、Token鉴权、自定义鉴权等。 4. 配置选定的鉴权方式所需的参数。具体的参数配置方法根据不同的鉴权方式而有所不同。例如,对于用户名/密码鉴权,需要设置 auth.common-auth.credential-types 参数为 Nacos,同时配置 auth.users 参数,指定每个用户的用户名和密码。对于Token鉴权,则需要设置 auth.common-auth.token 参数为你自己的Token。 5. 完成鉴权配置后,重新启动 Nacos 服务,使鉴权配置生效。 需要注意的是,在进行鉴权配置之前,建议先了解不同鉴权方式的优缺点,选择适合你需求的方式。另外,在配置鉴权时,确保设置的用户名和密码等敏感信息是安全的,并妥善管理和保护,以防止未授权的访问。 以上是简单的配置鉴权的步骤,根据具体需求和场景,可能还需要进一步的配置和调整,以确保鉴权机制的可靠性和安全性。 ### 回答2: Nacos 2.2版本提供了多种鉴权配置方式,可根据实际需求选择合适的方式进行配置。 一、Nacos管理台鉴权配置 1. 在nacos/conf下的nacos-mysql.sql文件中找到表T_USER并插入一条用户记录,例如插入用户信息为:用户名为admin,密码为123456。 2. 启动Nacos时,在启动命令中加入配置项:-Dnacos.security.username=admin -Dnacos.security.password=123456。 二、Nacos服务端鉴权配置 1. 在nacos/conf/auth目录下创建custom.properties文件,并添加以下内容: ``` # 是否启用自定义鉴权 security.auth.enabled=true # 开启完整权限校验,配置项可选值为:local、remote,默认为local security.auth.whitelist=local # 是否开启角色校验,默认为false security.auth.enable.role=true # 用户名和密码配置(或者自定义实现realm的用户名密码校验逻辑) security.auth.username=admin security.auth.password=123456 ``` 2. 启动Nacos时,加入参数 -Dnacos.standalone.auth.enabled=true。 三、Nacos客户端鉴权配置 1. 在应用的配置文件中,添加以下配置项: ``` # 是否开启Nacos客户端鉴权功能,默认为false nacos.client.auth.enabled=true # Nacos服务端用户名和密码 nacos.client.auth.username=admin nacos.client.auth.password=123456 # 是否开启非鉴权模式,即在鉴权失败时是否继续执行,默认为false nacos.client.auth.failFast=true ``` 2. 在应用启动时配置相应的认证方式,如: ```java NacosAuthConfig authConfig = new NacosAuthConfig(); authConfig.setUsername("admin"); authConfig.setPassword("123456"); NacosFactoryConfig factoryConfig = new NacosFactoryConfig(); factoryConfig.setAuthConfig(authConfig); ConfigService configService = NacosFactory.createConfigService(factoryConfig); ``` 以上是Nacos 2.2版本的鉴权配置方法,根据实际需求选择合适的配置方式进行配置,以确保系统的安全性和可靠性。 ### 回答3: 在Nacos 2.2版本中,可以通过以下步骤配置鉴权: 1. 确保已安装并启动Nacos 2.2版本。 2. 在Nacos的conf目录中找到nacos-mysql.sql文件,使用MySQL客户端执行该文件,创建nacos_config数据库。 3. 在Nacos的conf目录中找到application.properties文件,编辑该文件 4. 配置数据库连接信息: a. 找到spring.datasource.platform属性,并设置为mysql。 b. 配置MySQL数据库连接信息,包括数据库地址、端口、数据库名称、用户名和密码。 5. 配置鉴权类型: a. 找到nacos.security.enabled属性,并设置为true,启用鉴权。 b. 找到nacos.security.enable-https属性,并设置为false,如果没有启用HTTPS。 c. 找到nacos.security.access-key属性,并设置为鉴权用户名。 d. 找到nacos.security.secret-key属性,并设置为鉴权密码。 6. 保存并关闭application.properties文件。 7. 重新启动Nacos服务。 配置完成后,访问Nacos控制台时需要输入正确的用户名和密码进行鉴权。此外,Nacos的API接口也需要在请求Header中添加鉴权信息,以确保访问权限的合法性。 需要注意的是,以上是使用传统的用户名/密码方式进行鉴权配置,Nacos也支持其他类型的鉴权方式,如基于Token的鉴权方式,可根据具体情况进行配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒云客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值