我正在尝试使用Firebase运行cron作业。基本上我需要运行一个函数来进行大量的API调用,并在每天太平洋标准时间上午12:00将数据推送到firebase。有没有办法让我在Firebase的服务器端执行此操作?
我看到有这个模块here,,但我不明白它是如何工作的。如果有人有任何想法或知道上述模块如何工作那将是太棒了。
编辑:想法。如果我要创建一个显示函数完成时间的数据条目,该怎么办?基本上检查上次调用和完成函数的时间。如果它已经过了12点,那么调用该函数并更新字段,直到第二天才调用它。这是个好主意吗?我不需要在早上12点完成该功能,我只需要在第一个用户登录时完成该功能。
答案 0 :(得分:4)
Firebase上没有cron作业或计划选项,您必须使用另一个平台。这是一个,例如:https://zapier.com/zapbook/firebase/schedule/
更多信息:Best way to globally set up alerts for when a Firebase location is changed
您还可以使用一些在线cron作业,只需在Google上搜索“在线cron作业”。基本上,他们只是在指定的时间内调用一个URL。
答案 1 :(得分:3)
上个月,Firebase发布了Cloud Functions。
在那里,你可以根据不同的钩子触发类似lambda的函数:Pub / Sub事件,HTTP事件,...... 他们计划发布一个cron hook,你可以使用cron规则触发一个特定的函数。它尚未发布,但同时您可以使用Google App Engine
答案 2 :(得分:2)
在I / O 2019上,它宣布了一项新功能,可以使用firebase功能执行cronjobs。
签出
export scheduledFunction = functions.pubsub.schedule(‘every 5 minutes’).onRun((context) => {
console.log(‘This will be run every 5 minutes!’);
});
exports.scheduleJobs = functions.pubsub.
schedule(“every day 03:00”).onRun(async() => {
// do something
console.log(“All done! See you tomorrow morning!”);
});
答案 3 :(得分:0)
早在2017年3月,Abe Haskins发布了an article,介绍了如何利用Google的App Engine Cron为Firebase安排cron作业。如果要遵循这种方法,则需要:
Jeff Delaney提供了一个很棒的教程,介绍如何为Firebase创建动态cron作业。您可以看看它here。
此解决方案的目标是提供可以根据用户交互在客户端和服务器端进行管理的动态任务调度。让我们考虑一些用例:
- 预定或可暂停的提醒通知
- 发送生日快乐推送通知
- 注册后24小时发送欢迎电子邮件
- 如果任务由于错误而失败,请重试
最后,您还可以使用免费第三方cron作业服务,例如cron-job.org。它看起来很简单,而且可以为您提供:
希望其中一些会有所帮助。
答案 4 :(得分:0)
如果您不想使用免费的在线HTTP触发/请求生成器(例如https://atrigger.com/),则一种方法是在用户(客户端)与应用进行交互时触发云功能。存储的number
类型字段可以包含UNIX时间戳。如果该时间戳记早于24小时,请继续启动服务器端云功能(并刷新时间戳记),否则停止/中断/退出。可以是一周或一个月,也可以是您想要的任何时间间隔。
如果没有用户与您的应用交互,该怎么办?在这种情况下,为什么要更新应用程序的数据?关于第一个用户的陈旧数据,这是调整您的时间间隔的问题。另外,您可能会提醒用户正在获取新数据并等待/等待。