Python 谷歌云函数

时间:2021-02-07 20:04:56

标签: python function google-cloud-platform

我很难在 GCP 函数中运行最简单的 Python 代码,非常感谢有人指出我可能遗漏的内容。

我的 Python 非常基础,看起来像:

main.py

import requests

def main():
    """
    Simple
    """

    print("got here ok")
    print("----all good.")

    response = requests.get('https://swapi.dev/api/people/1')
    print(response.text)

if __name__ == "__main__":
    main()

从字面上看,我想要的(开始时)就是能够触发该功能并让它转到 swapi 并将我带回一大块 json 并将其打印到日志或某个地方(只是这样我可以看到它做到了)。仅此而已。

我正在使用触发器和 cloudbuild.yaml 触发函数构建:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions
  - deploy
  - main
  - --source=.
  - --trigger-http
  - --runtime=python38
  - --allow-unauthenticated

git push 将这些文件连同 requirements.txt(包含请求包及其传递)放在一起完全没有问题。触发器在按下时触发,函数构建正常,据我所知,它会产生绿色的小勾号图标。

我的期望是,在函数构建完成后,我应该能够通过点击谷歌提供的 URL 或通过函数控制面板中的测试实用程序来触发它。

不管我做什么,它都只会导致 500 服务器错误,并且日志中没有迹象表明该函数实际运行了。

我会遗漏什么?

1 个答案:

答案 0 :(得分:0)

我立即发现 main 函数中至少有两个问题。

  1. 它没有任何参数
  2. 它不返回任何东西

请尝试以下更改:

  1. def main(request): 作为 func main 的第一行
  2. return "success" 作为 func main 的最后一行(或您选择的响应)。

请参阅此 link 以查看示例。请注意 Ensure HTTP functions send an HTTP response 部分以及包含 request (flask.Request): The request object 的参数。