使用带有 GKE

问题描述

我如何实现一个尝试,除了在我的 python 脚本上,我使用 kubernetes python 客户端与我的 GKE 集群通信。如果它不存在,我想创建一个部署。我目前正在执行此操作(下面的代码),但它似乎不起作用,因为它返回 API 异常错误并且程序崩溃。

这是我目前的实现

def get_job():
    conn.connect()
    api = client.CustomObjectsApi()

    for message in consumer:
        message = message.value
        try:
            resource = api.get_namespaced_custom_object(
                        group="machinelearning.seldon.io",version="v1",name=message["payload"]["Metadata"]["name"],namespace="seldon",plural="seldondeployments",) # execution stops here and doesn't move to the next step.
                
            api.create_namespaced_custom_object(
                    group="machinelearning.seldon.io",body=message['payload'])
            print("Resource created")
                    print(e)
            else:
                pass

我该如何解决这个问题? 我试图遵循的逻辑是这个

  1. 如果部署存在,则在不使脚本崩溃的情况下返回一条已经存在的消息。
  2. 如果部署不存在,请创建一个新部署。

解决方法

我目前正在执行此操作(下面的代码),但它似乎不起作用,因为它返回 API 异常错误并且程序崩溃。

它崩溃的原因是代码中没有处理异常。你的方法似乎也有缺陷。你的 try 语句可以拆分成这样的 (credit)

StateT

所以你要做的就是在需要的地方添加操作。

如果部署存在,则返回一条已经存在的消息,而不会导致脚本崩溃。

您可以在 try: statements # statements that can raise exceptions except: statements # statements that will be executed to handle exceptions else: statements # statements that will be executed if there is no exception 语句中处理此问题,只需打印一条消息以声明它已经存在。

如果部署不存在,请创建一个新部署。

您可以在 try 语句的 else 部分添加此操作,因此当抛出错误时,它会捕获它并按照您指定的方式执行操作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...