在烧瓶中找不到 Gcloud api
Gcloud not found in flask api
我在 GCP 中使用以下 python 方法。此方法在 test.py
@functools.lru_cache()
def get_project():
return subprocess.check_output("gcloud config list --format 'value(core.project)'", shell=True).decode(
"utf-8").strip()
当我 运行 test.py 仅在 tpu 上时,它有效,当我在 flask API 中使用此方法时,我得到错误
'gcloud not found'.
但是,同样的方法在 GCP VM 中单独和在 flask API 下有效。
我无法弄清楚这可能是什么原因。
这并不是您问题的确切答案,但您可能有兴趣了解 metadata server。
从 this answer 我们可以或多或少地推断出元数据服务器也可以与 TPU 一起工作。请注意,虽然我不是 100% 确定这一点。
试试下面的代码,看看是否可以用它获取项目 ID。
import requests
def get_project():
# https://cloud.google.com/compute/docs/metadata/default-metadata-values#project_metadata
response = requests.get(
"http://metadata.google.internal/computeMetadata/v1/project/project-id",
headers={"Metadata-Flavor": "Google"}
)
return response.text
我在 GCP 中使用以下 python 方法。此方法在 test.py
@functools.lru_cache()
def get_project():
return subprocess.check_output("gcloud config list --format 'value(core.project)'", shell=True).decode(
"utf-8").strip()
当我 运行 test.py 仅在 tpu 上时,它有效,当我在 flask API 中使用此方法时,我得到错误
'gcloud not found'.
但是,同样的方法在 GCP VM 中单独和在 flask API 下有效。
我无法弄清楚这可能是什么原因。
这并不是您问题的确切答案,但您可能有兴趣了解 metadata server。
从 this answer 我们可以或多或少地推断出元数据服务器也可以与 TPU 一起工作。请注意,虽然我不是 100% 确定这一点。
试试下面的代码,看看是否可以用它获取项目 ID。
import requests
def get_project():
# https://cloud.google.com/compute/docs/metadata/default-metadata-values#project_metadata
response = requests.get(
"http://metadata.google.internal/computeMetadata/v1/project/project-id",
headers={"Metadata-Flavor": "Google"}
)
return response.text