【问题标题】:Azure Function Job that will never executes永远不会执行的 Azure 函数作业
【发布时间】:2019-10-26 14:48:33
【问题描述】:

我正在尝试填充一个 CRON 表达式,该表达式将假装永远不会被执行(至少在此生中不会)。

我经历了这个 SO 问题 https://stackoverflow.com/questions/8324306/cron-job-that-will-never-execute

但是该问题中的每个表达式都有一个例外 Microsoft.Azure.WebJobs.Host: Error indexing method 'Cleanup'. Microsoft.Azure.WebJobs.Extensions: The schedule expression '0 0 5 31 2 ?' was not recognized as a valid cron expression or timespan string.

有哪些可能的表达方式可以满足上述对 Azure Functions 的期望?

谢谢。

【问题讨论】:

    标签: azure cron azure-functions


    【解决方案1】:

    请查看 Azure CRON expression,它是:

    {second} {minute} {hour} {day} {month} {day-of-week}
    

    它使用 NCronTab 库来解释 CRON 表达式。在github 页面中,您可以找到值列可以包含* 或以逗号分隔的元素列表。这意味着它不支持?

    因此,只需将您的表达式更改为0 0 5 31 2 *,它就会被批准。如果你没有运行你的功能,你可以禁用它。你可以参考这个教程:How to disable functions in Azure Functions.

    更新:

    由于Function会计算Timer来获取函数运行时间,2/30和2/31永远不会到来,所以会循环计算,年份会增加直到超过9999的限制。这种情况下函数会发送异常。

    【讨论】:

    • @Isuru,现在有任何处理吗?如果这对您有帮助,请将其标记为答案。谢谢!
    • 真的很抱歉回复晚了。我在 TimerTrigger 上使用了0 0 5 31 2 *,但现在我得到了这个异常Microsoft.Azure.WebJobs.Host: Error indexing method 'Cleanup'. System.Private.CoreLib: Valid values are between 1 and 9999, inclusive. Parameter name: year. 知道为什么会发生这种情况吗?
    • @Isuru,这是因为 TimerTrigger 函数将使用 cron 表达式计算下一次运行时间,而 2/31 或 2/20 将永远不会运行,然后它将循环计算和年份数将超出限制。
    • @Isuru,在你的情况下,如果你想设置 2/31,它永远不会运行,所以为什么不禁用该功能。
    • 您能否更新答案以反映最新结论,以便其他人可以了解。我会将此标记为答案。谢谢!
    【解决方案2】:

    用于计划 WebJob 的主要格式

    • cron 表达式由 6 个字段组成:{second} {minute} {hour} {day} {month} {星期几}。
    • 支持的运算符有:, - * /
    • 每个字段可以有一个特定的值 (1)、一个范围 (1-10)、一组 值 (1,2,3),所有值 (),区间值 (/2 == 0,2,4,6,...) 或这些 (1,5-10) 的组合。
    • 每个值代表一个时间点,例如:“5 * * * * *” - 表示每分钟的第 5 秒 --> 00:00:05, 00:01:05, 00:02:05,...(不是每 5 秒一次)。

    因此根据上述规则,您的 cron 表达式将导致此错误

    不要使用0 0 5 31 2 ?,而是使用0 0 5 31 2 *

    【讨论】:

      【解决方案3】:

      您不能为每个算法设置从不,但闰年与星期六 29 日之间存在 28 年的差距。

      0 0 0 2 月 29 日星期六

      因为这将在 2048 年再次发生。

      够好吗?

      【讨论】:

        猜你喜欢
        • 2012-01-09
        • 2016-05-28
        • 2019-12-15
        • 1970-01-01
        • 2019-12-07
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多