C# 是否使用Azure批处理重试删除池或作业?

C# 是否使用Azure批处理重试删除池或作业?,c#,azure,azure-batch,C#,Azure,Azure Batch,我将使用作为使用Azure批处理池、作业和容器的起点 我稍微修改了他们删除池和作业的代码 // Cleanup Batch Account Resources // Clean up Job await batchClient.JobOperations.DeleteJobAsync($"{BatchConstants.JobIdPrefix}-{Guid}"); // Clean up Pool await batchClient.PoolOper

我将使用作为使用Azure批处理池、作业和容器的起点

我稍微修改了他们删除池和作业的代码

// Cleanup Batch Account Resources
// Clean up Job
await batchClient.JobOperations.DeleteJobAsync($"{BatchConstants.JobIdPrefix}-{Guid}");
            
// Clean up Pool
await batchClient.PoolOperations.DeletePoolAsync($"{BatchConstants.PoolIdPrefix}-{Guid}");
当我在本地运行此代码时,这非常有效,但是当它进入我的开发环境时,在删除池或作业(通常是作业)时会遇到问题。我返回状态代码“ServiceUnavailable”

当我手动登录Azure门户时,我可以看到容器被删除而没有问题(因此我知道可以建立连接并成功删除Azure对象),但请注意池和作业仍然处于活动状态

似乎
JobOperations
PoolOperations
没有重试策略的概念,因此,如果它返回ServiceUnavailable状态,是否有其他方法可以让它重试删除池和/或作业几次?或者我应该在本质上是一个for循环中尝试它,如果它返回了一个错误的状态代码,该循环最多运行5次(或更多),或者如果返回了一个好的状态代码,则继续运行程序的其余部分


感谢您的帮助。

您可以在
批处理客户端
本身上提供重试策略,该策略将应用于所有可重试的操作(即,如果该操作是可重试的操作,客户端将代表您自动重试)。例如,要添加每5秒重试10次的线性重试策略,请执行以下操作:

batchClient.CustomBehaviors.Add(RetryPolicyProvider.LinearRetryProvider(TimeSpan.FromSeconds(5), 10))
通过实现接口,您可以使用或创建自己的重试策略

通常,由于某些临时中断或问题,ServiceUnavailable将自行恢复。但是,尽管如此,您可能仍然需要处理即使这些重试策略在最大尝试次数后失败的情况。这将取决于您的场景可以接受的内容,例如,作业删除失败的时间可能会延长,但池删除失败的时间不会超过一段时间。在这种情况下,您可能希望在系统中包含更健壮的重试处理或回退警报和通知