在Azure上运行Node Scheduler App

时间:2018-07-31 14:21:44

标签: node.js azure azure-web-sites

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

Azure似乎已将Node应用程序绑定为基于表达的“ Web应用程序”,据我所知,没有一种方法可以可靠地部署我的命令行应用程序。我是否缺少某些东西,或者是否有更好的方法通过Web App或其他产品在Azure中部署此应用程序?确实希望避免仅为此目的而维护VM。

1 个答案:

答案 0 :(得分:0)

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

  

始终打开。默认情况下,如果网络应用闲置了一段时间,则会将其卸载   一段的时间。这样可以节省系统资源。在基本或   在标准模式下,您可以启用“始终开启”以保持应用程序全部加载   时间。如果您的应用程序运行连续WebJobs或运行已触发的WebJobs   使用CRON表达式,您应该启用Always On或Web作业   可能无法可靠运行。

也请在此处查看有关成本影响的讨论-Does the Azure Websites "*Always On" option have any implication on price?

现在,对于您的任务计划问题,App Service是否是最佳解决方案,是一个比较主观和更长的讨论,您需要在其中评估Azure拥有的多种产品以及您的要求/优先级等。

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

计划程序作业非常容易从Azure门户进行配置。您可以:

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

如果这些Azure Scheduler功能还不够,并且您需要更多的投入,那么这里是有关后台作业的最佳做法文档的一些指导-https://docs.microsoft.com/en-us/azure/architecture/best-practices/background-jobs#schedule-driven-triggers