реализовать try/except на python с клиентом python kubernetes с GKE

Как мне реализовать попытку, и, кроме моего скрипта python, я использую клиент python kubernetes для связи с моим кластером 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. Если развертывание не существует, создайте новое развертывание.

1 ответ

В настоящее время я делаю это (код ниже), но похоже, что это не работает, поскольку возвращает ошибку исключения API, и программа вылетает.

Причина сбоя связана с отсутствием обработки исключения в коде. Ваш подход тоже кажется ошибочным. Ваши операторы try можно разделить на что-то вроде этого (кредит )

      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 заявление и просто распечатайте сообщение, чтобы указать, что он уже существует.

Если развертывание не существует, создайте новое развертывание.

Вы можете добавить эту операцию в except часть оператора try, поэтому, когда возникает ошибка, он перехватывает ее и выполняет операцию, как вы указали.

Другие вопросы по тегам