【发布时间】:2019-04-28 13:11:54
【问题描述】:
我希望使用 python 从单个 GCP 云函数中提供多个路由。虽然 GCP 函数实际上在后台使用了烧瓶,但我似乎无法弄清楚如何使用烧瓶路由系统从单个云函数中提供多个路由。
我正在做一个非常小的项目,所以我自己编写了一个运行良好的快速路由器。现在我更多地使用 GCP Functions,我要么想弄清楚如何使用 Flask 路由器,要么在我的手卷版本上投入更多时间,也许还开源它,尽管它看起来很多余关闭烧瓶路由的副本,因此如果此功能不存在,最好将其直接添加到烧瓶中。
有人对这个问题有任何经验吗?我猜我错过了一个隐藏在 Flask 中某处的简单函数,但如果不是,这似乎是一个相当大/常见的问题,尽管我猜 GCP Functions python 是 beta 是有原因的?
编辑: 如果可能的话,我想使用 Flask 的手卷版本的精简示例:
router = MyRouter()
@router.add('some/path', RouteMethod.GET)
def handle_this(req):
...
@router.add('some/other/path', RouteMethod.POST)
def handle_that(req):
...
# main entry point for the cloud function
def main(request):
return router.handle(request)
【问题讨论】:
-
大多数 Web 框架基于 URL 路径进行路由。由于您只能为每个 Google Cloud Function 提供一条路径,您希望使用什么来路由请求?
-
我想在 URL 路径上进行路由,我用我的手卷版本成功地做到了。抱歉,不清楚。关键是,如果云功能在
example.com/my-function/上运行,我希望理想情况下使用flask 为/my-function/a和/my-function/b路由,但目前我正在使用我自己的,因为我可以弄清楚如何使用Flask 的路由在GCP 功能,因为您没有运行应用程序,而只是获取 Flask.request 对象。基本上我喜欢一个函数,它接受那个请求对象并通过 Flask 的路由器运行它,虽然我找不到它。 -
添加了一个例子来帮助澄清
-
这听起来像是 stackoverflow.com/questions/51995682/… 的副本。我会坚持您现在拥有的自定义路由,或者将其迁移为 App Engine 应用程序(现在有一个 Python 3.7 环境,默认情况下也使用 Flask)
-
考虑到 Flask 中
request的全球背景,这是有道理的,只是希望隐藏着一些我没有找到的魔法。在这种情况下,云功能可以节省大量资金,所以我可能会开发自定义路由器并坚持使用该功能。珍惜时间!
标签: python-3.x flask google-cloud-platform google-cloud-functions