我想做一个简单的无服务器后端,所以我尝试使用带有flask路由的谷歌云功能。
我正在尝试测试一个简单的代码,但它不起作用。以下源总是返回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"one_answers"#######.cloudfunctions.cnet/test1/test",但总是返回404错误。
我可以使用烧瓶路线吗?
我认为向云功能添加路由器不是一种很好的方式,但它确实有效。
我使用了对象"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网关,它允许您使用一个端点来处理所有路由。将高脚杯视为管理和部署api到api网关的简单方法
我同意这里给出的所有答案,但我想根据我的经验详细说明一下。由于云功能仅设计用于单一用途。它可以处理来自pubsub、存储等的HTTP请求和事件。当在云功能之前使用API网关或云端点时,您可以卸载身份验证和路由,因此您的代码只有一个责任。
然而,当使用云函数作为API时,缺点是永远无法摆脱冷启动问题。根据代码和编程语言的大小,服务请求有时可能持续2-10秒或更长时间。所以你可能更擅长谷歌应用引擎或你可以保留为";总是在那里";。
我目前正在试用云功能+API网关设置。我将一个对象的GET、POST和DELETE方法路由到同一个云函数。所以我基本上是想让它成为一个单一的目的,一个函数只处理一个对象的请求。这可以很容易地通过所用方法上的交换机案例来实现,因此不需要路由。示意图示例:
云功能一:
- 路径:/blogs
- 方法:GET、POST、DELETE
- 目的:处理博客对象上的所有操作
云功能二:
- 路径:/posts
- 方法:GET、POST、DELETE
- 用途:处理对post对象的所有操作
根据官方文件:
Cloud Functions是一个无服务器执行环境,用于构建连接云服务。使用云函数,您可以简单地编写,附加到从云基础设施和服务。当正在观看的事件被触发。
Python Quickstart云函数