google-cloud-functions - Google Cloud 函数中的 Python 代码未显示所需的输出
问题描述
我有以下几行python
代码
import os
def hello_world():
r=os.system("curl ipinfo.io/ip")
print (r)
hello_world()
从命令行执行时显示所需的输出,但输出Google Cloud Shell
末尾似乎有 0IP Address
$ python3 main2.py
34.X.X.2490
当我在其中部署相同的代码时,输Google CLoud function
出显示 OK
我必须按如下方式替换第一行代码GCF
以使其部署。
def hello_world(self):
有什么建议可以GCF
显示所需的输出,即curl
命令的输出吗?
解决方案
您的功能无法正常工作有两个原因:
- 首先,您不尊重HTTP Cloud Function Python 函数签名:
def hello_world(request):
....
- 其次,您不能使用系统调用。实际上不完全是,您可以执行系统调用,但是,因为您不知道安装了哪些包/二进制文件,所以您不能依赖它。它是无服务器的,您无需管理底层基础架构和运行时环境。
在这里,您假设 CURL 安装在运行时映像上。也许是,也许不是,也许是,也许将来会被删除!!你不能依赖它!!
如果要管理运行时环境,可以使用Cloud Run。你将管理你的运行时环境,你可以在上面安装你想要的东西,然后你就确定你能做什么。
最后备注:
注意:您可以对相同的 URL 执行 http get 请求来获取 IP,而不是执行 CURL
为什么要知道传出IP?它是无服务器的,您也无需管理网络。您将通过 Google IP 访问互联网。它可以随时更改,您的项目或其他人(如我)的项目中的其他云功能(或云运行)能够使用相同的 IP。这是 Google IP,不是您的!如果这是您的要求,请告诉我,有解决方案!
推荐阅读
- git - 带有私有子模块的 github 操作的 ssh 问题
- python - 如何使用字典来实现“switch/case”,其中评估值可能会失败?
- terraform - terraform null_resource 频繁触发变更
- flutter - Helvetica 没有 Unicode 支持 Flutter 使用 Pdf 包
- python - Plotly 折线图未正确显示
- r - 如何使 selectInput 和 renderPlotly 的可折叠树输出反应?出现错误:参数的“类型”(列表)无效
- ios - SwiftUI:支持粗体和斜体的自定义字体
- c - C struct内存存储顺序
- android-studio - 切换按钮最初未被选中
- fortran - Pi 计算使用 OpenMP 给出了不正确的结果