我正在尝试填充一个CRON表达式,该表达式将伪装成永远不会执行(至少在这个生命周期中不会如此)。
我遇到了这个问题
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函数的期望的表达式有哪些?
谢谢。
答案 0 :(得分:3)
请检查Azure CRON expression,它是:
{second} {minute} {hour} {day} {month} {day-of-week}
它使用NCronTab库来解释CRON表达式。在github页面中,您可以找到value列,其中可以包含*
或以逗号分隔的元素列表。这意味着它不支持?
。
因此,只需将您的表达式更改为0 0 5 31 2 *
,它将被批准。如果您的功能没有运行,则可以将其禁用。您可以参考本教程:How to disable functions in Azure Functions。
更新:
由于该函数将计算计时器以获取该函数的运行时间,因此将永远不会出现2/30和2/31,因此它将进行循环计算,并且年份将增加,直到超过限制9999。这种情况下函数将发送异常。
答案 1 :(得分:2)
您不能为每个算法设置永不,但是,周六29日的a年会间隔28年。
0 0 0 2月29日星期六
第一次出现这种情况是2048。
足够好吗?
答案 2 :(得分:1)
计划的WebJob使用的主要格式
因此,根据上述规则,您的cron表达式将导致此错误
代替使用def monitor_dumped():
"""Returns the files added to dump folder since its last modification time in the form
of a dict
"""
mod_time = os.path.getmtime(folder_to_monitor) # no. of seconds since epoch
m = datetime.datetime.fromtimestamp(mod_time) # change time format for difference computation
currentDT = datetime.datetime.now() # current system time
tslm = currentDT - m # time_since_last_modification
need = False
before = dict(\[(f, None) for f in os.listdir(folder_to_monitor)\])
if (tslm.seconds > 5):
need = True
else:
print("It hasn't been 5 seconds yet.")
while need:
time.sleep(10)
after = dict(\[(f, None) for f in os.listdir(folder_to_monitor)\])
added = \[f for f in after if not f in before\]
if added: print("Added: ", ", ".join(added))
before = after
need = False
return before
,而使用 0 0 5 31 2 ?