使用py eureka客户端进行微服务相互通信

时间:2020-06-23 17:40:58

标签: python python-3.x spring-boot flask netflix-eureka

我有两个在eureka服务器上注册的微服务。一个在python烧瓶中称为仪表板服务,另一个在spring boot中称为控制器服务。 我想使用服务名称从python micro服务调用spring boot micro服务。

我的python代码是

config.py

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

routes.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给出,因为在春季启动中,我看到此URL可以调用其他微服务而未提及ip和port。但是形成python flask,我无法调用该服务。

在春季靴子中,它正在与

一起使用
url = "http://controller-service/data"
restTemplate.getForObject("http://controller-service/data")

我是python和flask的新手,请提供有关使用eureka注册的客户端服务名称从py eureka客户端调用另一个微服务的帮助

1 个答案:

答案 0 :(得分:0)

您应该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)
相关问题