我想编写一个计划的触发器,以每13天触发一次Azure中的管道。我似乎找不到使用普通cron作业语法的答案,并且我已经看到您可以将其与正则表达式结合使用。开始日期无关紧要。我想到了这样的事情:
schedules:
- cron: "0 1 * * * $((((($(date +%s) / 86400) % 13))==0))"
displayName: Every 13 days execution
但是我收到语法错误。如何在Azure中向Cron计划的Triger添加正则表达式?
如果您回显正则表达式:echo $((((($(date +%s) / 86400) % 13))==0))
的结果,则可以看到它按预期工作,现在它将与yaml文件中的cron作业一起使用。
显然,0 0 */13 * *
之类的东西不起作用,因为它将在每月的13号和26号以及从一个月的26号到下一个的13号超过13天。
编辑:
0 */312 * * *
可以工作吗?根据{{3}}的说法,它似乎是这样。我只是不确定是否是24小时制,因此从未真正运行过?因为,好吧,每312小时一次,一天中就不会有312小时,但是如果不这样解释就可以了吗?
看到一个人在https://crontab.guru/#0_/312___上写了类似的内容,得到了15票赞成票。
第二次编辑:/ 312不起作用。频率不能高于23,这是有道理的。不要相信您在Stack上阅读的所有内容:-)
答案 0 :(得分:0)
import json import xmltodict from collections import OrderedDict rest_file = json.loads(rest.read()) doc = xmltodict.parse(xml.read()) input_dict = OrderedDict(doc) xml_file = json.loads(json.dumps(input_dict)) soap_dict_list = [] a = xml['FCDB_RES_ENV']['FCDB_BODY']['CUSTACCOUNT'] for i in a.__getitem__('ACCOUNT'): xml_dict = {key: a[key] for key in a if key in ['ACCNO', 'ACCOUNTTITLE', 'ACCOUNTTYPEDETAIL', 'ACCPRDDESC']} print(soap_dict) soap_dict_list.append(soap_dict) print(soap_dict_list) print("--------------------") rest_dict_list = [] for item in rest.get('OutData'): b = (item.get('Accounts')['AccountList']) json_file_account = b.pop() rest_dict = {key: json_file_account[key] for key in json_file_account if key in ['ACC#', 'TITLE', 'STYPE', 'STPDESC']} print(rest_dict) rest_dict_list.append(rest_dict) print(rest_dict_list) # Now iterate over list for info1 in rest_dict_list: for info2 in soap_dict_list: if info1['ACC#'] == info2['ACCNO']: print("Account number Match found") if info1['TITLE'] == info2['ACCOUNTTITLE']: print("ACCOUNTTITLE and TITLE matched") # and so on you can match rest of values
但是我收到语法错误。
此语法错误应由以下原因引起:包括6个条目,其中仅需要5个条目,或者您的schedules:
- cron: "0 1 * * * $((((($(date +%s) / 86400) % 13))==0))"
displayName: Every 13 days execution
中缺少branches
参数。
/ 312不起作用。
我尝试了这一点,并且工作正常,没有任何错误:
schedules
“不起作用”是什么意思,您是否遇到任何错误消息?如果是这样,请分享您遇到的错误。