Azure WebJob/Scheduler 从早上 8 点到下午 6 点每 30 分钟一班?
Azure WebJob/Scheduler every 30 minutes from 8am-6pm?
当我在 Azure 管理控制台中配置计划时,我只能选择以绝对结束 date/time(或永不结束)和间隔进行计划。
所以我不能从这个 UI 开始,每天从 8:00 上午到 6:00 下午 [=20] 每 30 分钟 运行 安排一个工作=]仅(即不要 运行 从 6:01 下午到 7:59 上午)。 Windows 任务管理器和我之前使用的所有其他调度程序(cron、quartz)都支持我想要的行为。
Azure 是否完全支持计划类型,例如通过 API 或对 Portal HTTP/JSON 界面的骇人听闻的使用?我不介意 "hacking" 一次时间表 - 它将时间表嵌入到实际工作中 script/application。
这是您需要在 WebJob 中实现的内容。我有一个类似的问题,因为我的 WebJobs 具有复杂的时间表。幸运的是,实施起来并不难。
这个 snippit 从 UTC 获取你的本地时间(据我所知是东部时间),Azure 的所有内容都设置为 UTC。然后它会检查是星期六还是星期日,以及它是否退出(不确定您是否需要这个)。然后它检查它是在早上 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
希望对您有所帮助。
您可以使用比 Azure 更灵活的内置计划。
您可以从此博客中了解有关其工作原理的更多信息 post http://blog.amitapple.com/post/2015/06/scheduling-azure-webjobs/
总结: 创建一个名为 settings.job
的文件,其中包含以下 json
{"schedule": "cron expression for the schedule"}
在您的情况下,"every 30 minutes from 8am to 6pm" 的 cron 表达式将是 0,30 8-18 * * *
所以你想要的 JSON 是
{"schedule": "0,30 8-18 * * *"}
请记住,这使用机器的时区,默认为 UTC。
当我在 Azure 管理控制台中配置计划时,我只能选择以绝对结束 date/time(或永不结束)和间隔进行计划。
所以我不能从这个 UI 开始,每天从 8:00 上午到 6:00 下午 [=20] 每 30 分钟 运行 安排一个工作=]仅(即不要 运行 从 6:01 下午到 7:59 上午)。 Windows 任务管理器和我之前使用的所有其他调度程序(cron、quartz)都支持我想要的行为。
Azure 是否完全支持计划类型,例如通过 API 或对 Portal HTTP/JSON 界面的骇人听闻的使用?我不介意 "hacking" 一次时间表 - 它将时间表嵌入到实际工作中 script/application。
这是您需要在 WebJob 中实现的内容。我有一个类似的问题,因为我的 WebJobs 具有复杂的时间表。幸运的是,实施起来并不难。
这个 snippit 从 UTC 获取你的本地时间(据我所知是东部时间),Azure 的所有内容都设置为 UTC。然后它会检查是星期六还是星期日,以及它是否退出(不确定您是否需要这个)。然后它检查它是在早上 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
希望对您有所帮助。
您可以使用比 Azure 更灵活的内置计划。 您可以从此博客中了解有关其工作原理的更多信息 post http://blog.amitapple.com/post/2015/06/scheduling-azure-webjobs/
总结: 创建一个名为 settings.job
的文件,其中包含以下 json
{"schedule": "cron expression for the schedule"}
在您的情况下,"every 30 minutes from 8am to 6pm" 的 cron 表达式将是 0,30 8-18 * * *
所以你想要的 JSON 是
{"schedule": "0,30 8-18 * * *"}
请记住,这使用机器的时区,默认为 UTC。