реализовать 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 ответ
В настоящее время я делаю это (код ниже), но похоже, что это не работает, поскольку возвращает ошибку исключения 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, поэтому, когда возникает ошибка, он перехватывает ее и выполняет операцию, как вы указали.