我有以下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
中部署相同的代码时,它显示OK作为输出
我必须替换GCF
中的第一行代码,如下所示,以使其部署。
def hello_world(self):
任何建议,使GCF
显示所需的输出,这是curl
命令的输出?
你的函数不能工作有两个原因:
- 首先,你不尊重HTTP云函数Python函数签名:
def hello_world(request):
....
- 其次,不能使用系统调用。实际上不完全是这样,您可以执行系统调用,但是,由于您不知道安装了哪个包/二进制文件,因此不能依赖于此。它是无服务器的,你不管理底层基础设施和运行时环境。
这里假设CURL安装在运行时映像上。也许是,也许不是,也许是,也许将来会被移除!!你不能依赖那个!!
如果你想管理你的运行时环境,你可以使用Cloud Run。你将管理你的运行时环境,你可以在上面安装你想要的东西,然后你确定你能做什么。
去年备注:注意:您可以对相同的URL执行http get请求来获取IP
,而不是执行CURL。为什么要知道传出IP?它是无服务器的,你也不用管理网络。您将通过谷歌ip访问互联网。它每次都可以更改,并且其他云功能(或云运行),来自您的项目或来自其他人(如我)的项目,都可以使用相同的ip。这是谷歌的ip,不是你的!如果这是你的要求,让我知道,有解决方案!