【问题标题】:Gcloud not found in flask api在烧瓶 api 中找不到 Gcloud
【发布时间】:2021-11-01 14:06:08
【问题描述】:

我在 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()

当我只在 tpu 上运行 test.py 时,它可以工作,当我在烧瓶 API 中使用此方法时,我得到错误

'未找到 gcloud'。

但是,相同的方法仅适用于 GCP VM 中的烧瓶 API。

我无法弄清楚这可能是什么原因。

【问题讨论】:

  • TPU VM 由 Google 管理,您不知道机器上安装了哪些软件。如果您使用代码,请使用 python 库并且不要执行外部二进制调用,除非您可以控制运行时环境(例如 VM 或容器)。

标签: python-3.x flask google-cloud-platform gcloud tpu


【解决方案1】:

这并不完全是您问题的答案,但您可能有兴趣了解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

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2022-09-28
    • 2021-12-20
    • 2016-10-31
    相关资源
    最近更新 更多