我可以使用函数触发器来安排函数吗? [复制]
Posted
技术标签:
【中文标题】我可以使用函数触发器来安排函数吗? [复制]【英文标题】:Can I shedule a function with a function trigger? [duplicate] 【发布时间】:2020-08-14 19:44:48 【问题描述】:在对集合中的一个文档进行一些更改后,我需要执行一个 cronjob 函数
例如,当我的用户商店打开时,我需要启动一个 cronjob 来在用户指定的时间关闭该商店,我的想法是这样的
exports.updateUser = functions.firestore
.document('stores/storeId')
.onUpdate((change, context) =>
//Logic to get the store close time here, lets say I get close in 4 hours
//Now here I plan to run a cronjob like this
exports.scheduledFunctionCrontab = functions.pubsub.schedule('* 4 * * *')
.timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
.onRun((context) =>
//Close my store in 4 hours
);
);
我可以这样做吗?有没有办法做这样的事情?
谢谢!
【问题讨论】:
【参考方案1】:您无法从另一个云功能更改计划的云功能的配置。
在您的情况下,一种解决方案是:
-
在商店文档的特定字段中写入关闭时间;
调度 (a) 运行的云函数,例如每分钟,(b) 检查是否有任何关闭时间低于当前运行时间的已打开存储文档,以及 (c) 是否有任何此类存储文档将其状态修改为已关闭。
【讨论】:
非常感谢 Renaud,您的时间和答案,但有一个问题,如果我每分钟都这样做,我将需要每分钟阅读所有文件以查看是否有关闭时间,如果没有我浪费了阅读时间,有没有更好的方法在商店关门时间到来时启动 cron? 我想如果我有 100.000 家商店,我每分钟将阅读 100.000 份文件,可能会获得 2 或 3 家关闭时间的商店 不客气。您可以根据(首先)关闭时间字段和(其次)应该不同于关闭的状态编写查询。 哦!非常感谢 !你是对的,所以查询只会读取具有这些结果的文档而不是所有文档吗? 没错!如果您尝试编写查询并遇到问题,请随时寻求帮助!您应该为 closingTime 字段分配一个时间戳值。您会在 SO 上找到几个答案,这些答案显示了如何编写这样的查询,但请再次毫不犹豫地寻求帮助。以上是关于我可以使用函数触发器来安排函数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我可以确定哪个 AWS 服务触发了我的 Lambda 函数吗?
在 Javascript 中触发函数时是不是必须提供所有参数? [复制]