作业已经 运行 时 azure logic 应用程序重试
azure logic app retry when job already running
我有一个 azure webjob,需要每 5 分钟使用参数“IsFullImport=false”调用一次,每周六凌晨 12 点使用参数“IsFullImport=true”调用一次。目前我有 2 个逻辑应用程序,重复设置指向同一个网络作业,1 个每 5 分钟运行一次,另一个每周六凌晨 12 点运行。
问题是,如果每 5 分钟一次的 Logic App 运行 在星期六凌晨 12 点的同一时间运行一次,我将收到 409 错误消息“与 WebJob 已经冲突 运行”。一旦凌晨 12 点出现错误,它将在下周六之前再次尝试。我查看了重试策略,它不适用于错误 409。我还查看了并发策略,它似乎只适用于同一逻辑应用程序的实例,而不适用于 2 个不同的逻辑应用程序。如果 webjob 已经 运行 或者可能有一个具有 2 个不同时间表和 api 调用的逻辑应用程序,我有没有办法让周六上午 12 点的逻辑应用程序重试?
Api 调用示例:
每 5 分钟调用一次:
https://mysite.scm.azurewebsites.net/api/triggeredwebjobs/MyJob/run?arguments="IsFullImport=false"
每周六中午 12 点打来电话:
https://mysite.scm.azurewebsites.net/api/triggeredwebjobs/MyJob/run?arguments="IsFullImport=true"
对于这个需求,理论上我们可以在一个逻辑应用中实现。但如果我们在一个逻辑应用程序中进行,我认为我们需要处理很多关于时间的问题 Saturday 12am
。所以我建议您在单独的逻辑应用程序中进行,并提供以下解决方案供您参考:
1. 在每个星期六上午 12 点逻辑应用程序的重复中,初始化一个名为 statusCode
的变量并将其值设置为 409
.
2.然后在逻辑应用中添加“Until”循环,并将条件设置为statusCode
不等于409
。
3. 在“Until”循环中,添加一个“HTTP”动作请求您的 api https://mysite.scm.azurewebsites.net/api/triggeredwebjobs/MyJob/run?arguments="IsFullImport=true
并使用“设置变量”操作将 statusCode
的值设置为 outputs('HTTP')?['statusCode']
4. 这一步很关键,点击“设置变量[=]的...
按钮61=]”操作,然后单击“在之后配置运行”。
检查 is successful
和 has failed
选项。
5. 之后,您的逻辑应用将继续请求 api,直到 statusCode
不等于 409
我有一个 azure webjob,需要每 5 分钟使用参数“IsFullImport=false”调用一次,每周六凌晨 12 点使用参数“IsFullImport=true”调用一次。目前我有 2 个逻辑应用程序,重复设置指向同一个网络作业,1 个每 5 分钟运行一次,另一个每周六凌晨 12 点运行。
问题是,如果每 5 分钟一次的 Logic App 运行 在星期六凌晨 12 点的同一时间运行一次,我将收到 409 错误消息“与 WebJob 已经冲突 运行”。一旦凌晨 12 点出现错误,它将在下周六之前再次尝试。我查看了重试策略,它不适用于错误 409。我还查看了并发策略,它似乎只适用于同一逻辑应用程序的实例,而不适用于 2 个不同的逻辑应用程序。如果 webjob 已经 运行 或者可能有一个具有 2 个不同时间表和 api 调用的逻辑应用程序,我有没有办法让周六上午 12 点的逻辑应用程序重试?
Api 调用示例:
每 5 分钟调用一次:
https://mysite.scm.azurewebsites.net/api/triggeredwebjobs/MyJob/run?arguments="IsFullImport=false"
每周六中午 12 点打来电话: https://mysite.scm.azurewebsites.net/api/triggeredwebjobs/MyJob/run?arguments="IsFullImport=true"
对于这个需求,理论上我们可以在一个逻辑应用中实现。但如果我们在一个逻辑应用程序中进行,我认为我们需要处理很多关于时间的问题 Saturday 12am
。所以我建议您在单独的逻辑应用程序中进行,并提供以下解决方案供您参考:
1. 在每个星期六上午 12 点逻辑应用程序的重复中,初始化一个名为 statusCode
的变量并将其值设置为 409
.
2.然后在逻辑应用中添加“Until”循环,并将条件设置为statusCode
不等于409
。
3. 在“Until”循环中,添加一个“HTTP”动作请求您的 api https://mysite.scm.azurewebsites.net/api/triggeredwebjobs/MyJob/run?arguments="IsFullImport=true
并使用“设置变量”操作将 statusCode
的值设置为 outputs('HTTP')?['statusCode']
4. 这一步很关键,点击“设置变量[=]的...
按钮61=]”操作,然后单击“在之后配置运行”。
检查 is successful
和 has failed
选项。
5. 之后,您的逻辑应用将继续请求 api,直到 statusCode
不等于 409