我有两个在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客户端调用另一个微服务的帮助
答案 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)