如何在 google 云函数上使用 Flask 路由?
How can I use flask routing on google cloud functions?
我想制作一个简单的无服务器后端,所以我尝试将 google 云函数与 Flask 路由一起使用。
我正在尝试测试一个简单的代码,但它不起作用。以下来源总是returns 404错误。
from flask import Flask, make_response
class Services:
pass
def create_app(test_config = None):
app = Flask(__name__)
services = Services
create_endpoints(app, services)
return app
def create_endpoints(app, services):
@app.route("/test", methods=['GET'])
def test():
return make_response('Test worked!', 200)
函数URL:######.cloudfunctions.net/test1
我试过“######.cloudfunctions.net/test1”和“######.cloudfunctions.net/test1/test”,但总是returns 404错误。
我可以使用 flask 路由吗?
根据官方文档:
Cloud Functions is a serverless execution environment for building and
connecting cloud services. With Cloud Functions you write simple,
single-purpose functions that are attached to events emitted from your
cloud infrastructure and services. Your function is triggered when an
event being watched is fired.
我认为将路由器添加到云功能的方式并不奇特,但它确实有效。
我使用了对象"request"(这是一个flask.request对象)的属性"path"来读取请求中域后的路径URL
from flask import abort
def coolrouter(request):
path = (request.path)
if (path == "/test"):
return "test page"
elif (path == "/home" or path =="/"):
return "ḧome page"
else:
abort (404)
请记住,云功能被设计为一次性服务,这意味着无法保存会话变量或其他内容,因为这是短暂的服务。
如果您想上传一个完整的站点,我建议您使用 App Engine,这是一个完全托管的无服务器应用程序平台。
Google 现在有 api gateway which would allow you to have a single endpoint to handle all of your routes. See goblet 作为管理和部署 api 到 api 网关
的简单方法
我同意这里给出的所有答案,但我想根据我的经验详细说明一下。由于 Cloud Functions 专为单一用途而设计。它可以处理来自 pubsub、存储等的 HTTP 请求和事件。在 Cloud Functions 前面使用 API 网关或 Cloud Endpoints 时,您可以卸载身份验证和路由,因此您的代码只有一个责任。
然而,将 Cloud Functions 用作 API 时,您将永远无法摆脱冷启动问题。服务请求有时会持续 2-10 秒或更长时间,具体取决于您的代码和编程语言的大小。因此,您可能更适合使用 Google App Engine 或您可以保留“永远在那里”的东西。
我目前正在试验云功能 + API 网关设置。我正在将一个对象的 GET、POST 和 DELETE 方法路由到同一个云函数。所以我基本上试图让它成为单一用途的方式,即一个函数只处理对一个对象的请求。这可以通过所用方法的开关盒轻松实现,因此不需要路由。示意图示例:
云功能一:
- 路径:/博客
- 方法:获取、POST、删除
- 用途:处理对博客对象的所有操作
云功能二:
- 路径:/posts
- 方法:获取、POST、删除
- 目的:处理对 post 个对象的所有操作
我想制作一个简单的无服务器后端,所以我尝试将 google 云函数与 Flask 路由一起使用。
我正在尝试测试一个简单的代码,但它不起作用。以下来源总是returns 404错误。
from flask import Flask, make_response
class Services:
pass
def create_app(test_config = None):
app = Flask(__name__)
services = Services
create_endpoints(app, services)
return app
def create_endpoints(app, services):
@app.route("/test", methods=['GET'])
def test():
return make_response('Test worked!', 200)
函数URL:######.cloudfunctions.net/test1
我试过“######.cloudfunctions.net/test1”和“######.cloudfunctions.net/test1/test”,但总是returns 404错误。
我可以使用 flask 路由吗?
根据官方文档:
Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services. Your function is triggered when an event being watched is fired.
我认为将路由器添加到云功能的方式并不奇特,但它确实有效。
我使用了对象"request"(这是一个flask.request对象)的属性"path"来读取请求中域后的路径URL
from flask import abort
def coolrouter(request):
path = (request.path)
if (path == "/test"):
return "test page"
elif (path == "/home" or path =="/"):
return "ḧome page"
else:
abort (404)
请记住,云功能被设计为一次性服务,这意味着无法保存会话变量或其他内容,因为这是短暂的服务。
如果您想上传一个完整的站点,我建议您使用 App Engine,这是一个完全托管的无服务器应用程序平台。
Google 现在有 api gateway which would allow you to have a single endpoint to handle all of your routes. See goblet 作为管理和部署 api 到 api 网关
的简单方法我同意这里给出的所有答案,但我想根据我的经验详细说明一下。由于 Cloud Functions 专为单一用途而设计。它可以处理来自 pubsub、存储等的 HTTP 请求和事件。在 Cloud Functions 前面使用 API 网关或 Cloud Endpoints 时,您可以卸载身份验证和路由,因此您的代码只有一个责任。
然而,将 Cloud Functions 用作 API 时,您将永远无法摆脱冷启动问题。服务请求有时会持续 2-10 秒或更长时间,具体取决于您的代码和编程语言的大小。因此,您可能更适合使用 Google App Engine 或您可以保留“永远在那里”的东西。
我目前正在试验云功能 + API 网关设置。我正在将一个对象的 GET、POST 和 DELETE 方法路由到同一个云函数。所以我基本上试图让它成为单一用途的方式,即一个函数只处理对一个对象的请求。这可以通过所用方法的开关盒轻松实现,因此不需要路由。示意图示例:
云功能一:
- 路径:/博客
- 方法:获取、POST、删除
- 用途:处理对博客对象的所有操作
云功能二:
- 路径:/posts
- 方法:获取、POST、删除
- 目的:处理对 post 个对象的所有操作