我需要创建一个将在每个月的每一个最后一天运行的cron表达式。我需要这个安排webjob。在每个月的最后一天运行的Cron表达式
我正在使用此表达式,但webjob没有采取L
查找每月的最后一天。
"0 0 11 L * *"
谢谢。
我需要创建一个将在每个月的每一个最后一天运行的cron表达式。我需要这个安排webjob。在每个月的最后一天运行的Cron表达式
我正在使用此表达式,但webjob没有采取L
查找每月的最后一天。
"0 0 11 L * *"
谢谢。
根据你的描述,我在这边查了这个问题。一个简单的方法,首先我测试了它在Azure上门户网站如下:
注:根据我的测试,特殊字符(?
,L
,W
)为{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,发现我们只能覆盖内建DailySchedule
和WeeklySchedule
,但他们不能满足您的要求,我认为您可能需要构建自定义时间表继承TimerSchedule
以实现您的目的。 AFAIK,我们还可以利用Azure Scheduler在某个时间表上触发我们的webjob,除了使用您的webjob设置cron表达式。这里是我的测试,你可以参考一下吧:
配置您webjob手动触发
登录到azure portal,添加您Azure Scheduler,然后配置操作设置点你webjob端点允许被触发。有关详细信息,你可以参考部分有关本tutorial
添加调度工作,然后配置日程安排如下:
此外,对于全cron表达式支持,您可以在Azure/azure-webjobs-sdk-extensions问题上添加您的反馈。
我们目前不支持'L'。我们使用ncrontab来解析cron表达式,作者指出这不支持:atifaziz/NCrontab#9
我见过的一种替代方法:为28-31或每个月设置一个cron表达式,函数本身检查它是否实际是本月的最后一天。如果没有,退出;如果是这样,继续。
您是否尝试过使用'Last'而不是'L'? –
你解决了这个问题吗,你需要进一步的帮助吗? –