【问题标题】:implement try/except on python with kubernetes python client with GKE使用 kubernetes 在 python 上实现 try/except 使用 GKE 的 python 客户端
【发布时间】:2021-07-09 16:55:34
【问题描述】:

如何实现尝试,除了在我的 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",
                    version="v1",
                    namespace="seldon",
                    plural="seldondeployments",
                    body=message['payload'])
            print("Resource created")
                    print(e)
            else:
                pass

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

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

【问题讨论】:

  • 它是崩溃还是发生了什么?
  • 一直在运行,但是在api异常错误后仍然没有创建新的部署。
  • 它一直在运行但是有一个api错误?

标签: python kubernetes try-catch seldon


【解决方案1】:

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

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

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

因此,您要做的就是将操作添加到需要的位置。

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

您可以在else 语句中处理此问题,并简单地打印一条消息以说明它已经存在。

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

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

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2013-11-13
    • 1970-01-01
    • 2020-08-07
    • 2019-06-26
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多