【问题标题】:Run Node Scheduler App on Azure在 Azure 上运行节点调度程序应用程序
【发布时间】:2018-08-03 03:24:46
【问题描述】:

我编写了一个 Node 应用程序,它本质上用作任务计划程序(或 cron),以使用节点计划在设定的时间间隔内运行批处理。当我在本地或虚拟机上运行该程序时,该进程将连续运行并执行我的作业,直到该进程被强制终止。当我将此应用程序作为 Azure 应用程序服务部署到 Azure 时,该进程更多地被视为“Web 应用程序”,并且在站点上一段时间不活动(即没有 Web 流量)后,Azure 会终止该进程。如果我通过浏览器访问“站点”,它会再次启动它。

似乎 Azure 与作为基于 express 的“Web 应用程序”的 Node 应用程序相关联,据我所知,没有办法以可靠的方式部署我的命令行应用程序。我是否遗漏了什么,或者是否有更好的方法通过 Web App 或其他产品在 Azure 中部署此应用程序?真的很想避免仅仅为了这个目的而维护一个虚拟机。

【问题讨论】:

    标签: node.js azure azure-web-app-service


    【解决方案1】:

    对于空闲超时的直接问题,有一个简单的配置可用,称为 Always on。看看这里的链接 - https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure

    始终开启。默认情况下,如果 Web 应用程序空闲了一段时间,它们会被卸载 一段的时间。这使系统可以节省资源。在基本或 标准模式,您可以启用 Always On 以保持应用程序加载所有 时间。如果您的应用程序运行连续 WebJobs 或触发运行 WebJobs 使用 CRON 表达式,您应该启用 Always On 或 web 作业 可能无法可靠运行。

    还可以在此处查看成本影响讨论 - Does the Azure Websites "*Always On" option have any implication on price?

    现在,对于您的任务调度问题,应用服务是否是最佳解决方案,这是一个更加主观和更长的讨论,您需要评估 Azure 拥有的多个产品以及您的要求/优先级等。

    Azure 有自己的任务调度服务 - https://azure.microsoft.com/en-us/services/scheduler/

    从 Azure 门户配置调度程序作业非常简单。你可以:

    1. 调用 http/https 端点(这隐含地为您提供了多种解决问题的方法)。可以使用基本、证书或 AzureAD OAuth 客户端凭据完成身份验证)。
    2. 将消息发送到存储队列或服务总线队列/主题,然后其他进程可以对其进行适当处理。

    如果这些 Azure 调度程序功能还不够,并且您需要更多参与,这里有一些关于后台作业最佳实践文档的指南 - https://docs.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#schedule-driven-triggers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 2019-05-20
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多