2017-08-24 6945 views
2

我需要创建一个将在每个月的每一个最后一天运行的cron表达式。我需要这个安排webjob。在每个月的最后一天运行的Cron表达式

我正在使用此表达式,但webjob没有采取L查找每月的最后一天。

"0 0 11 L * *"

谢谢。

+0

您是否尝试过使用'Last'而不是'L'? –

+0

你解决了这个问题吗,你需要进一步的帮助吗? –

回答

1

根据你的描述,我在这边查了这个问题。一个简单的方法,首先我测试了它在Azure上门户网站如下:

enter image description here

注:根据我的测试,特殊字符(?LW)为{day}是无效的。

而且,我跑我与0/5 * * L * *表达侧webjob,然后我得到了以下错误:

Unhandled Exception: Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException: Error indexing method 'Functions.CronJob' ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --->NCrontab.CrontabException: 'L' is not a valid [Day] crontab field expression. ---> NCrontab.CrontabException: 'L' is not a valid [Day] crontab field value. It must be a numeric value between 1 and 31 (all inclusive).

然后我跟着这个样本TimerSamples.cs,发现我们只能覆盖内建DailyScheduleWeeklySchedule,但他们不能满足您的要求,我认为您可能需要构建自定义时间表继承TimerSchedule以实现您的目的。 AFAIK,我们还可以利用Azure Scheduler在某个时间表上触发我们的webjob,除了使用您的webjob设置cron表达式。这里是我的测试,你可以参考一下吧:

  • 配置您webjob手动触发

  • 登录到azure portal,添加您Azure Scheduler,然后配置操作设置点你webjob端点允许被触发。有关详细信息,你可以参考部分有关本tutorial

  • 添加调度工作,然后配置日程安排如下:

    enter image description here

此外,对于全cron表达式支持,您可以在Azure/azure-webjobs-sdk-extensions问题上添加您的反馈。

0

我们目前不支持'L'。我们使用ncrontab来解析cron表达式,作者指出这不支持:atifaziz/NCrontab#9

我见过的一种替代方法:为28-31或每个月设置一个cron表达式,函数本身检查它是否实际是本月的最后一天。如果没有,退出;如果是这样,继续。

相关问题