为什么我的触发AzureWebJob被多次触发

时间:2016-03-10 11:26:25

标签: azure cron azure-webjobs

我看到this SO question并且我得到了类似但不同的效果。我使用了来自Scheduling Azure WebJobs with cron expressions的信息并查看了触发的WebJob api:

  1. 小时的单个触发器,latest_run.triggered设置为“外部 - ”。
  2. 多个(> 10)在每小时10点运行,其中latest_run.triggered设置为“Schedule - * 10 * * * *”。
  3. 日志显示它在一小时过去10次运行时多次运行(如19次!)。这是job_scheduler.log文件末尾的一个片段(我已经缩短了它.WebJob的最后两次调用分别运行了16次和19次。)

    [03/10/2016 10:10:52 > bdda8b: SYS INFO] WebJob invoked
    [03/10/2016 10:10:52 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.2973642
    [03/10/2016 10:10:53 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.5786066
    [03/10/2016 10:10:54 > bdda8b: SYS INFO] WebJob invoked
    [03/10/2016 10:10:54 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.4536019
    [03/10/2016 10:10:55 > bdda8b: SYS INFO] WebJob invoked
    [03/10/2016 10:10:55 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.4067190
    [03/10/2016 10:10:56 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.7034940
    [03/10/2016 10:10:57 > bdda8b: SYS INFO] WebJob invoked
    [03/10/2016 10:10:57 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.5629458
    [03/10/2016 10:10:58 > bdda8b: SYS INFO] Next schedule expected in 00:00:00.0187612
    [03/10/2016 10:11:00 > bdda8b: SYS INFO] WebJob invoked
    [03/10/2016 10:11:00 > bdda8b: SYS INFO] Next schedule expected in 00:59:00.9405909
    [03/10/2016 10:27:57 > bdda8b: SYS INFO] Scheduling WebJob with * 10 * * * * next schedule expected in 00:42:03.7574703
    

    注意:job_scheduler文件不会显示小时运行时的0运行。但是,Azure WebJob Scheduler表示它当时正在运行。

    如果我在Azure门户中手动触发WebJob,那么它只运行一次(根据Azure WebJob仪表板),所以看起来调度程序正在做一些有趣的事情。

    我的WebJob是Web服务的一部分,并使用Publish与Web站点一起部署。我有一个触发的WebJob,设计为每小时运行一次。我的WebJob setting.job文件如下所示:

    {
       //This will run every hour at 10 minutes past the hour
       "schedule": "* 10 0-23 * * *"
    }
    

    和我的webjob-publish-settings.json文件(我认为不再使用)看起来像这样:

    {
     "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
     "webJobName": "PrintProcessorWebJob",
     "startTime": "2014-06-23T00:00:00+08:00",
     "endTime": "2020-01-01T00:00:00+01:00",
     "jobRecurrenceFrequency": "Hour",
     "interval": 1,
     "runMode": "Scheduled"
    }
    

    认为这是一个新问题,但在尝试诊断时我删除了现有的WebJob,因此我丢失了旧日志。我知道WebJobs的规则在开发期间发生了变化,也许我没有正确更新。

1 个答案:

答案 0 :(得分:0)

主要问题是您的cron表达式不正确。 * 10 * * * *表示“在每小时10分钟后每分钟运行一分钟”。相反,您需要0 10 * * * *

第二个问题是,您似乎需要删除Azure调度程序的剩余部分。尝试在调度程序下转到Azure门户,并删除任何不应存在的内容。您的webjob-publish-settings.json应该看起来像this