首页 > 解决方案 > 在 python 中为 gcloud 命令捕获“HTTPError 404”

问题描述

试图捕捉这个错误:

ERROR: (gcloud.compute.instances.add-labels) HTTPError 404: The resource 'projects/matei-testing-4010-5cbdeeff/zones/us-east1-b/instances/all' was not found

尝试了不同版本的代码,但没有一个对我有用。

我当前的代码似乎没有发现错误:

from googleapiclient import discovery, errors

try:
    print("Applying labels")
    gcloud_value = (f'gcloud compute instances add-labels all --labels="key=value" --zone=us-east1-b')
    process = subprocess.run([gcloud_value], shell=True)
except errors.HttpError:
   print("Command did not succeed because of the following error: {}".format(errors.HttpError))

我如何捕获错误以便以后使用它?

谢谢

标签: pythonapigcloud

解决方案


尝试这个:-

import subprocess
gcloud_value = 'gcloud compute instances add-labels all --labels="key=value" --zone=us-east1-b'
process = subprocess.run(gcloud_value, shell=True, capture_output=True)
print(process.stdout.decode('utf-8'))
print(process.stderr.decode('utf-8'))
print(process.returncode)

人们会期望 gcloud 向 stderr 发出错误。因此,通过检查 process.stderr,您应该能够找出问题所在(如果有的话)。此外,如果 process.returncode 不为零,您应该能够推断它不起作用,但这完全取决于底层应用程序(在本例中为 gcloud)的编写方式。即使发生故障,也有很多东西返回零!


推荐阅读