我很难让最简单的Python代码在GCP函数中运行,如果有人指出我可能错过了什么,我将非常感激。
我的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:
触发函数buildsteps:
- name: 'gcr.io/cloud-builders/gcloud'
args:
- functions
- deploy
- main
- --source=.
- --trigger-http
- --runtime=python38
- --allow-unauthenticated
git push会把这些文件和requirements.txt(其中包含了requests包和它的传递)放在一起,没有任何问题。触发器在push时触发,函数构建正常,据我所知,它产生了一个绿色的小勾号图标。
我的期望是,在函数建立之后,我应该能够通过点击google提供的URL或通过功能控制面板中的测试实用程序来触发它。
无论我做什么,它只是导致一个500服务器错误,没有从日志中显示函数实际运行的迹象。
我还能错过什么?
我立即发现main函数至少有两个问题。
- 它没有任何参数
- 它不返回任何东西
请尝试以下更改:
def main(request):
作为函数main
的第一行return "success"
作为函数main
的最后一行(或您选择的响应)。
请参考此链接查看示例。注意Ensure HTTP functions send an HTTP response
部分以及包含request (flask.Request): The request object
的参数。