【问题标题】:VS2017 Azure WebJob Extensions - How do I deploy a TimerTrigger WebJob?VS2017 Azure WebJob 扩展 - 如何部署 TimerTrigger WebJob?
【发布时间】:2018-12-13 15:18:32
【问题描述】:

我有以下 WebJob 项目,我试图在其中部署 TimerTrigger WebJob 功能,但是在通过 Visual Studio 2017 中的“发布为 Azure WebJob...”部署它时,我无法让它按计划运行。

Program.cs

class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        config.UseTimers();

        var host = new JobHost(config);
        host.RunAndBlock();
    }
}

Functions.cs

public class Functions
{
        public static async Task ProcessAsync([TimerTrigger("0 */3 * * * *")] TimerInfo timerInfo, TextWriter log)
        {
              ...
        }
}

webjob-publish-settings.json

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "TestWebJob",
  "runMode": "OnDemand"
}

Settings.job

{ "schedule": "0 */3 * * * *" }

这方面的文档几乎不存在,令人费解的是为什么 Azure 支持 Scheduled CRON TimerTrigger,但在部署时实际上并未将它们作为选项包含在内。

这可能吗?

【问题讨论】:

    标签: azure-webjobs azure-webjobssdk


    【解决方案1】:

    如果您手动创建了一个计划 webjob,我想您可能已经发现它会生成一个settings.job 来设置schedule。然后门户中的SCHEDULE 读取schedule并展示它。如果你用VS2017部署一个TimerTrigger webjob,它不会生成这个文件,因为你已经定义了TimerTrigger函数。

    然后我做了一些测试来展示它。首先我用 TimerTrigger 创建一个 webjob 并部署它,它会显示与n/a SCHEDULE 相同的结果。然后我终止 webjob 进程并上传 settings.job 然后刷新(不是门户中的刷新)页面,然后 SCHEDULE 更改为 CRON 表达式。如果你删除文件,它会变回来。

    至于日志,在我看来也是settings.job造成的,如果你有这个文件,它会每x分钟触发一次这个webjob,如果你没有它,它会每x分钟触发一次函数网络作业。

    如果您仍有疑问,请告诉我。

    【讨论】:

    • 如果你使用 TimerTrigger 调用一个函数,你可以将它部署为一个连续的 webjob,它仍然有效。
    • "关于日志,在我看来也是settings.job造成的,如果你有这个文件就会每x分钟触发一次这个webjob,如果没有就会触发网络作业中每 x 分钟执行一次该功能。”是的,这是令人困惑的部分,应该更有力地记录下来。感谢您的回复。
    【解决方案2】:

    上面的代码似乎正在工作。但是,如果您熟悉手动运行“计划的”WebJobs,它的运行方式与您想象的完全不同。

    如果您要手动运行它们,您通常会在顶层看到调度,以及每 x 分钟更新一次的状态等:

    您还会看到父级的日志更新,如下所示:

    但是,当通过 Visual Studio 2017 使用上述方法部署它时,您只能让 WebJob 在其生命周期内运行一次。因此,您也只能在日志列表中获得一个父日志。

    不过,如果您点击此处,您将看到每个预定功能日志的单独日志:

    希望这对正在考虑设置 WebJobs 的其他人有意义:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2021-11-09
      • 2017-05-01
      • 1970-01-01
      相关资源
      最近更新 更多