我构建了一个云函数(一个非常简单的函数,效率不高(。以下是代码和屏幕截图-
import functions_framework
import requests
@functions_framework.http
def hello():
URL='https://api.openweathermap.org/data/2.5/weather?lat=36&lon=139&appid=a70f3b4f60b2f4c64e7aad63df5758d7'
r = requests.get(url = URL)
data = r.json()
b={}
b['temp']=data['main']['temp']
b['pressure']=data['main']['pressure']
return b
print(hello())
复制码
我正在尝试获取一个位置的温度和压力。日志附在下面,正在提取值-日志文件
然而,存在一个称为"错误"的错误;hello((接受0个位置参数,但给定了1个";我无法修复。
有人能帮帮我吗?
云函数将在事件下执行,在您的情况下是HTTP事件。已注册的函数(在本例中为hello
(将始终接收一个参数,该参数是对该函数执行的HTTP请求。
事实上,这在文档中非常清楚:
在Python中,您可以向Python函数框架注册HTTP处理程序函数。HTTP处理程序函数必须接受一个Flask请求对象作为参数,并返回一个值,Flask可以将该值转换为HTTP响应对象。
代码可能是:
import functions_framework
import requests
@functions_framework.http
def hello(request):
URL='https://api.openweathermap.org/data/2.5/weather?lat=36&lon=139&appid=a70f3b4f60b2f4c64e7aad63df5758d7'
r = requests.get(url = URL)
data = r.json()
b={}
b['temp']=data['main']['temp']
b['pressure']=data['main']['pressure']
return b
我强烈建议你先阅读这些文档,因为你似乎还没有完全理解云功能。基本上,云功能是作为一个非常小的网络应用程序工作的。
我也不建议打印结果。使用HTTP云函数的目的是获得HTTP响应,而不是每次都去日志中查看。
最后,构建正常并不意味着函数在运行时将按预期工作。
像这样声明hello:
def hello(request):
这也意味着不能这样调用函数:
print(hello())
Python装饰器@functions_framework.http
定义了函数的签名。