0

我有一个实时Node应用程序,我打算在谷歌云环境中运行。这是实时的,因为服务器必须始终与Firebase同步。例如,处理搜索功能等。所以我会有这个不断滴答的事情,这只是等待事件发生。Google云端平台 - 日程安排?

其中一个应用程序的核心部分是Events(日期和时间)可以被创建的概念。

我需要什么,本质上是一个黑盒子。我想说“在12月23日晚上8点告诉我关于这个事件”。有点像一个兆丰长的回调或我可以订阅的东西。

我知道cron是可用的,但是这是不太我想要的。一个cron在实时应用程序中没有真正的业务,并且感觉不对。我的应用程序应该适应事件。我不希望机枪每24/7分钟一次发射,特别是当系统没有改变时。我需要抛弃基于时间的投票想法。

我相信我所真正需要的是一个Scheduler这似乎像一个cron,但更多的“实时”。

这使我Microsoft Azure which has a Scheduler

我认为这可能是正是我需要的。如果是这样,Google云端是否有相当于我在Docs中可能缺失的内容?

回答

1

的GAE灵活的环境中提供了类似的cron服务。

Scheduling Jobs with cron.yaml

App Engine的Cron服务,您可以配置,在规定的时间或定期运行定期 计划任务。 这些任务通常被称为cron作业。这些cron作业是由App Engine Cron服务自动触发的 。例如, 您可能会使用它每天发送报告电子邮件至 每10分钟更新一些缓存数据,或每小时更新一次摘要 信息。

cron作业将使用HTTP GET请求在给定的 时间调用URL。由cron调用的HTTP请求最多可以运行60分钟,但是是subject to the same limits as other HTTP requests

About cron.yaml

下面是一个例子cron.yaml文件:

cron: 
- description: daily summary job 
    url: /tasks/summary 
    schedule: every 24 hours 
- description: monday morning mailout 
    url: /mail/weekly 
    schedule: every monday 09:00 
    timezone: Australia/NSW 
- description: new daily summary job 
    url: /tasks/summary 
    schedule: every 24 hours 
    target: beta 

因此,所有你需要做的是配置此类cron作业(触发)不管是什么您需要的操作,并为执行这些操作的相应网址添加处理程序。

The schedule format

时间表举例如下:

every 12 hours 
every 5 minutes from 10:00 to 14:00 
every day 00:00 
every monday 09:00 
2nd,third mon,wed,thu of march 17:00 
1st monday of sep,oct,nov 17:00 
1 of jan,april,july,oct 00:00 

注:这是没有可能的安排编程的cron作业,但有一个feature request它。

cron.yaml在问题中提到的具体的例子:

cron: 
- description: trigger the Dec 23rd event 
    url: /events/12.23 
    schedule: 23 of dec 20:00 

要部署的cron作业:

gcloud app deploy cron.yaml 
+1

这只是从谷歌云平台复制/粘贴...你能提供一个实际的例子,详细说明如何部署cron作业! – Learn2Code

+0

@ Learn2Code完成。你认为它能更好地回答这个问题吗? –

0

在你的情况,谷歌云功能 - 以及更普遍作为服务/无服务器的函数 - 看起来最适合运行事件驱动的代码片段。 在GCP上,它基本上是将一个nodejs模块上载到一个存储桶中,将逻辑嵌入到导出的函数中。

docs

/** 
* Cloud Function. 
* 
* @param {object} event The Cloud Functions event. 
* @param {function} callback The callback function. 
*/ 
exports.helloWorld = function helloWorld (event, callback) { 
    console.log(`My Cloud Function: ${event.data.message}`); 
    callback(); 
}; 

你可以阅读更多关于here