【发布时间】:2018-01-24 14:30:27
【问题描述】:
假设我有一个 Cloud Firebase Function - 由一个 cron 作业调用 - 每次调用它都会产生 30 多个任务。
这些任务非常慢(平均每个 5 - 6 秒),我无法直接在原始文件中处理它们,因为它会超时。
因此,解决方案将调用另一个“工作者”函数,每个任务一次,以独立完成任务并将结果写入数据库。到目前为止,我能想到三种策略:
发布订阅消息。那将是惊人的,但似乎you can only listen on pubsub messages from within a Cloud Function,而不是创建一个。诉诸外部解决方案,例如拥有 GAE 实例,对我来说不是一个选择。
从第一个调用工作程序 http 触发的 Firebase 云函数。我认为那是行不通的,因为我需要等待所有调用的工作函数的响应,在它们完成和
send之后,我原来的函数会超时。将任务附加到实时数据库列表中,然后由每个数据库更改触发一个工作函数。工作人员之后必须从队列中删除任务。这可能会奏效,但感觉一个简单的问题有很多活动部件。例如,如果工人扔东西怎么办?需要另一个 cron 来“清理”数据库等。
想到的另一个解决方案是firebase-queue,但它的自述文件明确指出:
“firebase-queue 可能还会有特定的用例, 但是,如果您正在寻找通用、可扩展的队列 Firebase 系统,那么它很可能建立在 Google 之上 Cloud Functions for Firebase 是理想的途径”
它没有得到官方支持,他们实际上是在说我们应该使用函数来代替(这是我正在尝试做的)。我对在 prod 中使用明天可能会被放弃的库(如果还没有的话)有点紧张,并且希望避免走这条路。
【问题讨论】:
标签: firebase firebase-realtime-database google-cloud-platform google-cloud-functions google-cloud-pubsub