我需要创建一个cron表达式,它将在每个月的最后一天运行。我需要这个来安排webjob。
我正在使用此表达式但是webjob没有使用L
来查找每个月的最后一天。
"0 0 11 L * *"
感谢。
答案 0 :(得分:2)
根据你的描述,我在我这边检查了这个问题。一个简单的方法,首先我在azure门户网站上测试它如下:
注意:根据我的测试,?
的特殊字符(L
,W
,{day}
)无效。
另外,我使用0/5 * * L * *
表达式运行webjob,然后我收到以下错误:
未处理的异常:Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:错误索引方法' Functions.CronJob' ---> System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> NCrontab.CrontabException:' L'不是有效的[Day] crontab字段表达式。 ---> NCrontab.CrontabException:' L'不是有效的[Day] crontab字段值。它必须是1到31之间的数值(全包)。
然后我按照此示例TimerSamples.cs发现我们只能覆盖内置DailySchedule
和WeeklySchedule
,但它们无法满足您的要求,我认为您可能需要构建自定义计划会继承TimerSchedule
以实现您的目的。
AFAIK,除了使用您的webjob设置cron表达式之外,我们还可以利用Azure Scheduler在某些时间表上触发我们的webjob。这是我的测试,你可以参考它:
将您的webjob配置为手动触发
登录azure portal,添加Azure Scheduler,然后将操作设置指向允许触发的webjob端点。有关详细信息,请参阅此tutorial
然后按如下方式配置计划:
此外,对于完整的cron表达式支持,您可以在Azure/azure-webjobs-sdk-extensions的问题上添加反馈。
答案 1 :(得分:0)
我们目前不支持' L'我们使用ncrontab来解析cron表达式,作者注意到这不支持:atifaziz / NCrontab#9
我已经看过一个替代方案:为28-31或每个月设置一个cron表达式并让函数本身检查它是否实际上是该月的最后一天。如果没有,退出;如果是这样,继续。