gpt4 book ai didi

python - 使用py eureka客户端进行微服务互通

转载 作者:行者123 更新时间:2023-12-05 03:51:55 28 4
gpt4 key购买 nike

我在 Eureka 服务器上注册了两个微服务。一个在 python flask 中称为仪表板服务,另一个在 spring 引导中称为 Controller 服务。我想使用服务名称从 python 微服务调用 spring boot 微服务。

我的python代码是

配置.py

 eureka_client.init_registry_client(eureka_server= <eurekaServer>,
app_name="dashboard-service",
instance_port=<port>)

路线.py

@cache.route("/get_data", methods=['POST'])
@cross_origin()
def get_data():
try:
data = request.get_json()
headers = request.headers
url = "http://controller-service/data"
response = requests.post(url, json=data, headers=headers)
logger.info(res)
return res.json()
except Exception as e:
logger.exception(e)
logger.debug(traceback.format_exc())
return None

url = "http://controller-service/data",我把它作为 url 给出,因为在 spring boot 中我看到这个 url 可以调用其他微服务而无需提及 ip 和端口。但是形成 python flask 我无法调用该服务。

在 spring boot 中它正在使用

url = "http://controller-service/data"
restTemplate.getForObject("http://controller-service/data")

我是 python 和 flask 的新手所以请帮助如何使用 eureka 注册客户端服务名称从 py eureka 客户端调用另一个微服务

最佳答案

你应该使用eureka_client,来访问Java服务。就像你使用 RestTemplate 而不是 HTTPClient 访问 Java 中的其他组件一样。在 Python 中,您应该使用库提供的函数,而不是原始的 urllib。

import py_eureka_client.eureka_client as eureka_client

try:
res = eureka_client.do_service("controller-service", "/data")
print("result of other service" + res)
except urllib.request.HTTPError as e:
# If all nodes are down, a `HTTPError` will raise.
print(e)

关于python - 使用py eureka客户端进行微服务互通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62540697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com