首页 文章

Google Cloud 端平台 - 计划程序?

提问于
浏览
1

我有一个实时 Node 应用程序,我计划在Google Cloud上运行 . 这是实时的,因为服务器必须始终与 Firebase 同步 . 例如,要处理搜索功能等等,所以我将不断发出这样的事情,只是等待事件发生 .

该应用程序的核心部分之一是可以创建 Events (日期和时间)的概念 .

我需要的,本质上是一个黑盒子 . 我想说“12月23日晚上8点告诉我这件事” . 有点像一个超级长的回调或我可以订阅的东西 .

我知道 cron 是可用的,但是感觉不对 . 我的应用程序应该适应事件 . 我不希望机枪一分钟一次24/7点火,特别是在没有对系统进行任何改动的情况下 . 我需要放弃基于时间的民意调查 .

我相信我真正需要的是 Scheduler ,它看起来像一个Cron,但更多"Real time" .

这导致我Microsoft Azure which has a Scheduler

我认为这可能正是我所需要的 . 如果是这样,是否存在我可能在文档中遗漏的Google Cloud等效内容?

2 回答

  • 0

    GAE灵活的环境提供类似的cron服务 .

    来自Scheduling Jobs with cron.yaml

    App Engine Cron服务允许您配置定期计划的任务,这些任务在定义的时间或定期间隔运行 . 这些任务通常称为cron作业 . 这些cron作业由App Engine Cron服务自动触发 . 例如,您可以使用它每天发送报告电子邮件,每10分钟更新一些缓存数据,或者每小时更新一些摘要信息 . cron作业将在一天的给定时间使用HTTP GET请求调用URL . 由cron调用的HTTP请求最多可以运行60分钟,但受到与其他HTTP请求相同的限制 .

    来自About cron.yaml

    以下是cron.yaml文件的示例:cron:

    • 描述:每日总结工作
      url:/ tasks / summary
      时间表:每24小时一次
    • 描述:星期一早上邮寄
      url:/ mail / weekly
      时间表:每个星期一09:00
      时区:澳大利亚/新南威尔士州
    • 描述:新的每日总结工作
      url:/ tasks / summary
      时间表:每24小时一次
      目标:beta

    因此,您需要做的就是为您需要的任何操作配置此类cron作业(触发器),并为执行这些操作的相应URL添加处理程序 .

    来自The schedule format

    以下是时间表示例:每12小时一次
    每10分钟一班,从10:00到14:00
    每天00:00
    每个星期一09:00
    3月2日,星期三,星期三,星期五17:00
    星期一,星期四,星期六17:00
    1月1日,7月,7月,00:00

    注意:它's not yet possible to schedule the cron jobs programmatically, but there'是一个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
    
  • 3

    在您的情况下,Google Cloud 端功能 - 更常见的功能即服务/无服务器 - 似乎最适合运行事件驱动的代码片段 . 在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的更多信息 .

相关问题