在特定时间运行Google Cloud Function

4

我希望能够安排云函数在特定时间执行。它应该只运行一次。

我基本上有一个名为“startTask”的函数,它修改Firestore数据库中的一些数据。在X秒后(时间传递给startTask函数),应调用“finishTask”函数。

我已经尝试过使用Google Cloud Tasks,但我觉得这不是正确的方法。

3个回答

2
谷歌云目前没有我所知道的能够满足您需求的服务。如果您需要在用户执行Y操作N秒后发生X事件,您将需要自己编写该服务。
您并未指定使用哪些计算服务(App Engine、Compute Engine、Kubernetes等),但几乎任何语言都可以编写任务调度服务。有许多方法可以实现此目的(客户端代码/服务器端代码)。许多操作系统/语言组合支持使用超时和回调调度函数。

0

-2
最简单的方法是创建一个发布/订阅主题,您的云函数订阅该主题。Cloud Scheduler可以按计划将事件推送到。

创建主题和订阅

gcloud pubsub topics create cron-topic
# create cron-sub for testing.  Function will create it's own subscription
gcloud pubsub subscriptions create cron-sub --topic cron-topic

创建日程表

以下是命令,但由于它还处于测试阶段,请参阅这里的控制台指南

# send a message every 3 hours. For testing use `0/2 * * * *` for every 2 min
gcloud beta scheduler jobs create pubsub --topic=cron-topic --schedule='0 */3 * * *'

创建一个函数来消费主题

将您的函数代码放在当前目录中,并使用此命令部署函数以侦听主题。

FUNCTION_NAME=cron-topic-listener
gcloud functions deploy ${FUNCTION_NAME} --runtime go111 --trigger-topic cron-topic

注意:发布/订阅事件至少会发送一次。在某些情况下,事件可能会被发送多次。请确保您的函数是幂等的。


OP正在询问如何安排云函数仅运行一次。 - somenickname

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接