3

当我在 Azure 管理控制台中配置计划时,我只能选择使用绝对结束日期/时间(或永不结束)和间隔进行计划。

在此处输入图像描述

所以我不能从这个 UI 安排一个作业,每天从上午 8:00 到下午 6:00 运行每 30 分钟一次即不要从下午 6:01 到上午 7:59 运行)。Windows 任务管理器和我之前使用过的所有其他调度程序(cron、quartz)都支持我想要的行为。

Azure 是否完全支持计划类型,例如通过 API 或对门户 HTTP/JSON 接口的恶意使用?我不介意“修改”一次时间表 - 它会比将时间表嵌入到实际的作业脚本/应用程序中。

4

2 回答 2

7

您可以使用比 Azure 更灵活的内置调度。您可以从这篇博文 http://blog.amitapple.com/post/2015/06/scheduling-azure-webjobs/了解更多关于它的工作原理

摘要:创建一个名为的文件settings.job,其中包含以下一段 json

{"schedule": "cron expression for the schedule"}

在您的情况下,“从上午 8 点到下午 6 点每 30 分钟”的 cron 表达式将是0,30 8-18 * * *

所以你想要的 JSON 是

{"schedule": "0,30 8-18 * * *"}

请记住,这使用机器的时区,默认为 UTC。

于 2015-07-31T23:12:04.207 回答
0

这是您需要在 WebJob 中实现的东西。我有一个类似的问题,因为我的 WebJobs 具有复杂的时间表。幸运的是,实施起来并不难。

此代码段从 UTC 获取您的本地时间(据我所知为东部时间),Azure 的所有设置都设置为该时间。然后它会检查是周六还是周日以及是否退出(不确定是否需要)。然后它检查是在上午 8 点之前还是下午 6 点之后,以及是否退出。如果它通过了这两个条件,WebJob 就会运行。

        //Get current time, adjust 4 hours to convert UTC to Eastern Time
        DateTime dt = DateTime.Now.AddHours(-4);

        //This job should only run Monday - Friday from 8am to 6pm Eastern Time.
        if (dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday) return;
        if (dt.Hour < 8 || dt.Hour > 16) return;

        //Go run WebJob

希望这可以帮助。

于 2015-07-31T22:23:22.910 回答