如何调用参数并从 Google 云托管函数返回输出?



我想编写一个python函数,它允许我抓取一个给定URL的网站,该网址将与颤振移动应用程序接口。我已经在python上编写了非常基本的代码,但现在我对如何集成Google Cloud一无所知。非常感谢一些演练帮助。

我的代码模型如下:

import timeago
import pytz
from bs4 import BeautifulSoup
from time import mktime
from datetime import datetime
def Parser(url):
......# URL PARSING
......
......
return domain_name, page_title, clean_txt, timestamp
url = '******************'
file = Parser(url)
print (file[0], file [1], file [2], file [3])

我尝试在网上查看许多示例,其中大多数使用烧瓶。老实说,我不明白烧瓶的用途,以及如何将其用于Google Cloud Functions(或任何云功能(。据我了解,我应该把我的要求.txt文件如下:

timeago
pytz
mktime
bs4
datetime

如果是这样,那么我应该如何定义我的导入(即来自 bs4 导入 BeautifulSoup 等(语句?

另外,如何将这些函数调用到我的颤振应用程序代码中?我有云功能的网址,但不知道如何处理它。我尝试浏览官方文档,但由于缺乏任何输入或输出参数,其中大部分只是"Hello World"代码,几乎没有任何用处(对我来说(。

感谢和欢呼

要解决您的一些查询,请执行以下操作:

老实说,我不明白烧瓶的用途,以及如何将其用于Google Cloud Functions(或任何与此相关的云功能(

有几种方法可以触发云函数,其中一种比较常见的方法是使用 HTTP 触发器。

对于 HTTP 触发器,需要使用 RESTful 端点包装实际函数/业务逻辑Flask,以便可以通过 HTTP 请求调用函数(后一个操作应由颤振代码执行(。其中一些实际上是由Cloud Functions处理的,你主要需要指定一个包装器方法,将一个flask.Request对象(本质上是上述HTTP请求的有效载荷(作为调用你的主要业务逻辑/函数的参数,其中flask.Request对象将是你的参数(例如url(提供。 然后,您需要在部署云函数时提供此包装器方法(见下文(。

如果是这样,那么我应该如何定义我的导入(即来自 bs4 导入 BeautifulSoup 等(语句?

import语句按照代码片段照常工作。

如何将这些函数调用到我的 Flutter 应用程序代码中?

您需要从颤振应用代码向云函数的 URL 触发 HTTP 请求。

将事情放在上下文中:

在上面的示例中,您可以将其包装在具有flask.Request对象的入口点方法周围,如下所示:

import timeago
import pytz
from bs4 import BeautifulSoup
from time import mktime
from datetime import datetime
from flask import escape

def Parser(url):
......# URL PARSING
......
......
return domain_name, page_title, clean_txt, timestamp

def invoke_parser(request):
request_json = request.get_json(silent=True)
file = Parser(escape(request_json['url']))
print (file[0], file [1], file [2], file [3])

函数的变化是,在调用函数时,必须在 HTTP 请求正文中传递url

因此,要部署函数,请使用以下命令:

gcloud functions deploy [CLOUD FUNCTION NAME] 
--entry-point invoke_parser 
--runtime python37 
--trigger-http

--entry-point参数将是要调用的包装方法(我在示例中使用invoke_parser作为包装方法(。

要调用它,请触发一个 HTTP 请求(这是可以提供Parser函数的url参数的地方(,例如:

curl -X POST 
"https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME" 
-H "Content-Type:application/json" 
--data '{"url":"******************"}'

在你的颤振代码中,你需要触发一个等效于上述curl命令的HTTP请求