我想将Cloud Function的执行安排在特定时间。它应该只运行一次。
我基本上有一个函数“ startTask”,它可以修改Firestore数据库中的某些数据。 X秒钟后(时间已传递给startTask函数),应调用“ finishTask”函数。
我已经尝试过弄乱Google Cloud Tasks,但是我觉得这不是正确的方法。
答案 0 :(得分:1)
Google Cloud没有能够满足您所需要的服务。如果您需要X在用户执行Y之后的N秒钟内发生,则需要编写自己的代码。
您没有指定要用于计算的服务(App Engine,Compute Engine,Kubernetes等),但是用几乎任何语言编写任务调度服务并不难。有很多方法可以做到这一点(客户端代码/服务器端代码)。许多OS /语言组合都支持通过超时和回调来调度功能。
答案 1 :(得分:0)
最简单的方法是创建一个发布/预订主题max()
,您的云功能将预订该主题。 Cloud Scheduler可以按计划将事件推送到cron-topic
cron-topic
命令在下面,但由于它是Beta版,请参见console guide here
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 * * *'
主题的函数将您的功能代码放在当前目录中,并使用此命令来部署侦听cron-topic
主题的功能
cron-topic
注释发布/订阅事件至少发送一次。在某些情况下,事件可以发送多次。确保您的函数是幂等的