Azure webjobs vs调度器

Azure webjobs vs调度器,azure,azure-webjobs,azure-scheduler,Azure,Azure Webjobs,Azure Scheduler,一个非常简单的问题: 如果Azure WebJobs是免费的,为什么会有人使用Azure调度程序? 我找不到任何关于“azure webjobs vs azure scheduler”的主题 主要区别在于webjob包含调度器可以执行的所有操作: 调度程序可以进行HTTP调用 WebJob可以做到这一点,甚至更多(运行SQL命令等) Web作业的实际调度位构建在调度程序之上。当您在后台的日程表上设置Web作业时,它使用调度程序启动它。WebJobs提供了一个很好的小位置来承载执行的代码。事实上

一个非常简单的问题:
如果Azure WebJobs是免费的,为什么会有人使用Azure调度程序?

我找不到任何关于“azure webjobs vs azure scheduler”的主题

主要区别在于webjob包含调度器可以执行的所有操作:

  • 调度程序可以进行HTTP调用
  • WebJob可以做到这一点,甚至更多(运行SQL命令等)

Web作业的实际调度位构建在调度程序之上。当您在后台的日程表上设置Web作业时,它使用调度程序启动它。WebJobs提供了一个很好的小位置来承载执行的代码。事实上,如果您为网站创建WebJobs,请查看门户上的调度程序,您也会看到它们列在那里

还请注意,调度程序可能会调用不运行Azure的其他系统。如果您在云服务中运行的某些内容需要定期调用,或者即使某些内容是在其他地方(其他提供商或本地)托管的,您可以在调度程序中进行设置

关于成本方面,调度程序还有一个空闲层:

  • 将监视连续作业,如果它们退出,将重新执行。这样,它们的行为更像本地机器中的“服务”。有一个模块可以监视并保持你的应用程序正常运行。“始终打开”是一项功能,它将帮助您的网站保持活力,从而使您的webjobs持续运行

  • 调度程序用于触发webjobs。它使用调度程序用户帐户(而不是后端帐户)。通过这种方式,您可以从计划程序的免费层中移出,注册到更高的层以满足您的需要。但本质上,调度器所做的一切都是访问https端点(这是公共的,但需要您的身份验证)

  • 触发的作业(计划作业和按需作业)由https调用调用。这些调用是负载平衡的——这与具有多个实例的web应用程序的负载平衡非常相似。默认情况下,连续作业并行运行,但可以设置为单实例


  • 2016年。下面的答案不再准确

    WebJobs现在也有一个内置的调度程序,该调度程序可以由cron表达式定义

    发布到Azure时,您可以选择是由计划程序还是由WebJob内部计划程序触发WebJob


    重要提示:Azure调度程序对1小时或1分钟的频率有限制,具体取决于是否付费。但是,对于内部调度程序,您的应用程序服务需要始终打开才能继续运行并启动作业。此“始终打开”状态可能会影响您的定价。

    对于从版本2开始的Web作业,没有理由再使用Azure调度程序。事实上,Azure门户已经将此功能标记为(遗留)

    WebJob SDK v2中引入了额外的触发器,其中一个是TimerTrigger,它与CRON表达式一起工作以调度执行。此执行模式不需要任何其他Azure构造,您只需将webapp设置为AlwaysOn即可保证webjob运行


    另一个与TimerTriggers配合使用的azure服务是azure功能,它构建在WebJob SDK之上,允许无服务器执行。

    我觉得没有意义的是,调度程序的空闲模式的频率限制为1小时(即:每1小时执行一次任务)。更高的频率(如1分钟、5分钟等)不是免费的。有了webjobs,你可以有一个连续的任务,它是免费的……连续的任务在网站上运行,调度器不会不断地调用它。它旋转起来,然后离开去跑。这就像您在Windows Server上创建一个任务调度程序来按计划启动,而不是在启动时启动一个不退出的可执行文件。一个需要外部输入/触发器来执行(计划的输入/触发器),另一个则不需要。连续作业始终在所有实例上运行。计划作业按其计划启动,并随机发送到实例以运行(负载平衡器最终选择要在其上运行的实例)。@sports我不确定我是否完全理解您为什么对成本和频率感到困惑。但是在你的免费/共享站点上持续运行的webjobs只在站点运行时运行,显然是20分钟一次。计算成本仍然是根据您的站点的运行状态(免费/共享/保留)计算的,作业只是计算能力的另一个消费者。可靠调度的作业需要某些服务在给定时间启动任务的保证正常运行时间,因此高频作业的成本较高。WebJob与其相应的调度程序条目之间的关联是否可以通过API发现?(我正在做一些自动化工作,发现这一点可能会很有用。)管理门户如何知道特定的调度程序作业是特定WebJob的作业?好的,但我想在WebJob中调用我的API端点如何做?我上传了一个带有curl?的.php文件,所以如果我用cron表达式创建一个触发的web作业,它仍然是免费的?是你付钱买的吗?我有点困惑。创建作业时没有太多的选项或解释:@ernest-Web作业是“免费”的,无论它们是触发的还是持续的,因为(我认为)它们使用的资源与您的Web应用程序使用的资源相同。但是,如果您希望作业始终运行,则web应用本身需要设置为“始终打开”(因为默认情况下,它们在不活动后关闭),这可以通过Azure门户中的应用设置完成。但是,“始终开启”仅在基本、标准和高级web应用程序层上可用。没有一个是免费的。希望有帮助。