gpt4 book ai didi

firebase - 如何以编程方式在 firebase 中创建 cron 作业

转载 作者:行者123 更新时间:2023-12-02 09:12:08 24 4
gpt4 key购买 nike

我这里有一个独特的问题。实际上,我需要安排一项任务,在特定时间向符合条件的用户发送电子邮件。我查了一下,发现调度cron作业可以解决这个问题。但是,就我而言,我需要根据特定用户何时满足特定条件以编程方式安排这些任务。

这是我的场景

  1. 我正在我的应用程序中开展推荐事件,推荐最多 5 人的用户可以获得折扣订阅

  2. 用户推荐5人后,只要在24小时内付款,订阅费用将大幅降低。否则成本返回到原始值

  3. 我使用 Firebase 云功能在特定时间向符合条件的用户发送提醒电子邮件,提醒他们在 24 小时内付款

现在问题

  1. 我想在特定时间发送提醒电子邮件,例如他推荐 5 个人后,当他的时间还剩 3 小时时等。

  2. 如果我只是安排一个函数而不考虑用户,我可能必须定期设置 cron 作业,比如 1 分钟,以始终检查我的数据库中的用户是否符合条件,然后向他们发送电子邮件。这造成了严重的问题,无论是否有合格的用户,云功能都会运行。

  3. 另一个问题是,通过上述实现,我无法在特定/准确的时间向用户发送电子邮件,除非我每 1 秒安排一次任务,这当然会导致价格飞涨,因为云函数将在大约每天鸣叫 86400 次(86400 秒)

我提出的解决方案

  1. 我只需要一种动态安排 cron 任务的方法,以便我可以为特定用户安排作业。这将解决许多问题,例如在特定时间发送电子邮件、防止云功能在不必要时运行、为不同用户设置不同电子邮件发送时间等。

  2. 我计划使用带有用户 ID 请求参数的 http 触发器来安排任务,以便 Firebase 可以使用此 ID 仅将任务分配给特定用户,即每个符合条件的用户都会有自己的 http 触发器

请问有没有办法实现这个或任何其他适合我的情况的好的解决方案?

最佳答案

不要尝试动态创建计划函数,而是考虑使用一个按固定计划运行的函数,然后在该函数内部实现计时逻辑。

因此,与其说“我需要安排一个从现在开始运行 3 小时的函数并向这 5 个人发送消息”,不如将其视为可以写入数据库的任务:“在 x:yz 发送给这 5 个人发送电子邮件”,然后定期使用 Cloud Function 检查需要执行哪些任务。

另请参阅Delay Google Cloud Function , How to use scheduler for Firebase Cloud Functions with Realtime Database/Analytics triggers?

或者您可以使用Cloud Scheduler为您要执行的特定操作创建任务,然后通过 PubSub 将其发布到 Cloud Functions。

作为一种更新的替代方案:使用具有 API 的单独调度程序服务来创建计划,例如 Cloud Tasks。 Doug 在 How to schedule a Cloud Function to run in the future with Cloud Tasks (to build a Firestore document TTL) 中写了一篇很棒的文章.

关于firebase - 如何以编程方式在 firebase 中创建 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com