python - 在 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))
我如何捕获错误以便以后使用它?
谢谢
解决方案
尝试这个:-
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)的编写方式。即使发生故障,也有很多东西返回零!
推荐阅读
- r - 如何使用 mutate 在 R 中正确格式化日期时间列?
- c# - Xamarin.Forms ViewModel 在页面加载时访问了两次
- php - 在php中按下按钮后运行python程序
- sql - 如何根据更新的记录更改创建列?
- azure - Azure Functions 运行速度不够快
- python - 向数据库插入数据时如何避免重复
- exception-handling - 如何围绕 MefBootstrapper InitializeModules 实现异常处理?
- html - 边框底部左侧样式为方形/菱形
- angular - 无法到达 Route Angular
- r - 通过从列表中选择列名来绑定行?