Python Google 云函数中的代码未显示所需的输出

Python code in Google Cloud function not showing desired output

我有以下几行 python 代码

import os
def hello_world():
  r=os.system("curl ipinfo.io/ip")
  print (r)
hello_world()

Google Cloud Shell 中从命令行执行时显示所需的输出,但似乎在 IP Address 输出的末尾有一个 0

 $ python3 main2.py
   34.X.X.2490

当我在 Google CLoud function 中部署相同的代码时,输​​出显示正常

我必须如下替换 GCF 中的第一行代码以使其部署。

   def hello_world(self):

有什么建议可以让 GCF 显示所需的输出,即 curl 命令的输出吗?

您的功能将因 2 个原因而无法运行:

  1. 首先,你不尊重 HTTP Cloud Function Python function signature:
def hello_world(request):
  ....
  1. 其次,你不能使用系统调用。事实上不完全是,你可以执行系统调用,但是,因为你不知道安装了哪些package/binaries,你不能依赖这个。它是无服务器的,您无需管理底层基础设施和运行时间环境。

这里假设 CURL 安装在 运行time 映像上。也许是,也许不是,也许是,也许将来会被删除!!你不能依赖它!!


如果你想管理你的运行时间环境,你可以使用Cloud Run。您将管理您的 运行 时间环境,您可以在上面安装您想要的东西,然后您确定您可以做什么。


最后评论:

注意:除了执行 CURL,您还可以对同一个 URL 执行 http get 请求以获取 IP

为什么要知道传出IP?它是无服务器的,您也不用管理网络。您将通过 Google 个 IP 访问互联网。它可以随时更改,并且来自您的项目或其他人(如我)的项目的其他云功能(或云 运行)能够使用相同的 IP。这是 Google 个 IP,不是你的!如果这是您的要求,请告诉我,有解决方案!