yas*_*eya 3 firebase google-cloud-functions react-native-firebase
我希望运行一个根据我的云功能中的每个用户运行的调度程序,而不是为所有用户同时运行的通用调度程序。
\n\n例如,如果用户 A 执行某个操作,则仅为用户 A 启动调度程序(例如,每 30 分钟一次),而不为其他用户启动。\n但用户 B 也会执行相同的操作,并在不同时间为自己启动调度程序。
\n\nNow UserA\xe2\x80\x99s and UserB\xe2\x80\x99s scheduler could be running at different times but same intervals(30 mins)
\n\nHow can I create such a function?\nHelp would be very much appreciated.
\n仅靠 Cloud Functions 无法为每个用户独立安排函数执行。您只能按照您在功能配置中提供的计划安排单个功能。显然,为每个用户部署新功能是无法扩展的。
你有两个选择:
部署尽可能频繁运行的计划函数(每 1 分钟)。让它查询数据库来找出每个用户需要运行哪些工作项,并安排它们执行。根据工作量,您可能希望通过 pubsub 将这些任务卸载到其他函数调用。
基于每个用户,使用Cloud Tasks安排应为用户完成的第一项工作(可以实现该工作以调用 HTTP 触发器)。任务的有效负载应该描述要完成的工作(至少应该包含它所代表的用户的 ID)。当该任务完成时,HTTP 触发器必须确定下一次定期调用的时间,并按此安排。实际上,队列中始终有一项任务处于“待处理”执行状态。如果不知何故你的函数无法建立下一个任务,那么周期性特性就会被打破,你将不得不以某种方式找出如何重新启动它。
IMO 中,选项 1 更容易实现,但是如果调用需要精确地在一分钟的那一秒发生,那么您就会失去计时的粒度。您还需要维护一个数据库或其他一些存储来查询,以弄清楚如何告诉每分钟函数应该为任何给定用户执行更多工作。
选项 2 更难正确实施,需要使用具有新 API 的全新产品,但您将能够以更精细的粒度来安排任务。
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |