我如何确认客户端(安卓应用程序)数据已由 GCP 云功能完成处理?

Posted

技术标签:

【中文标题】我如何确认客户端(安卓应用程序)数据已由 GCP 云功能完成处理?【英文标题】:How do I acknowledge client-side ( android app) that data has been done processing by GCP cloud functions? 【发布时间】:2021-09-21 00:32:53 【问题描述】:

我正在尝试创建一个应用程序,让用户将图片上传到云存储,并且云函数在处理用户上传的图片后返回文件/或 JSON 响应。

简而言之,这是一个完整的过程: 用户上传数据->数据上传到云存储->云函数处理->结果导出到云存储/或返回JSON响应给用户端设备(app)

下一步是在客户端下载数据(或获取 JSON 响应),然后将其处理并导出到云存储。

我的主要问题是,我应该如何确认客户端(应用程序)数据已在云功能端完成处理?

我应该在这里使用哪些服务?我仅限于使用 GCP 云函数(python 环境)。

谢谢。

【问题讨论】:

【参考方案1】:

服务器应用程序无法使用标准 HTTP/HTTPS 协议向客户端应用程序发送请求。为了实现你想要的,你需要在服务器和客户端之间建立一个套接字连接,这样服务器就可以随时向客户端发送数据。

解决方案 1

如果可能,您可以使用 firebase realtime database 为您建立套接字连接:

当云函数完成数据处理后,将响应写入实时数据库中的特定节点(如果您想在客户端下载,响应可能包含上传的数据 URL)。

您可以参考this guide 以您的首选语言(支持python)为您的服务器应用程序设置firebase admin sdk,并参考this one 开始使用。这个guide 将向您展示如何在实时数据库中保存数据

在客户端,您 listen 更改该特定节点以获取云函数响应(每当云函数在实时数据库中写入响应时,您的客户端将收到写入的数据)。

解决方案 2

当您的函数完成其工作时,您可以使用 Cloud messaging 向您的客户端应用发送静默/仅数据通知。

解决方案 3

您可以为服务器应用程序使用 python WebSocket 库,为客户端应用程序使用 android WebSocket 库。 (但我不建议您使用第三种解决方案)

【讨论】:

您好,谢谢您的建议,我该如何完成这个任务“当云功能完成数据处理后,它会将响应写入实时数据库中的特定节点”。我在云函数中使用 python 运行时,是否有任何库可以让我“将响应写入实时数据库中的特定节点”? 我已经用一些链接更新了我的答案,这些链接将向您展示如何为 python 服务器应用程序设置 firebase 实时数据库以及如何将数据写入数据库。 非常感谢您的努力。我已接受您的回答并 +1。

以上是关于我如何确认客户端(安卓应用程序)数据已由 GCP 云功能完成处理?的主要内容,如果未能解决你的问题,请参考以下文章

GCP 云功能未正确接收/确认 PubSub 消息

GCP 云函数何时确认发布/订阅消息?

GCP Pub/Sub 无法确认消息

GCP 中的确认截止日期、消息保留时间、死信和重试策略

为啥 GCP Pub/Sub 订阅无法确认消息?

GCP 中的物联网管道