B. *_*ter 4 c# azure azure-batch
我使用此 Microsoft 教程作为使用 Azure Batch 池、作业和容器的起点。
我已经稍微修改了他们删除池和作业的代码
// Cleanup Batch Account Resources
// Clean up Job
await batchClient.JobOperations.DeleteJobAsync($"{BatchConstants.JobIdPrefix}-{Guid}");
// Clean up Pool
await batchClient.PoolOperations.DeletePoolAsync($"{BatchConstants.PoolIdPrefix}-{Guid}");
Run Code Online (Sandbox Code Playgroud)
当我在本地运行此代码时,这非常有效,但是当它进入我的开发环境时,在删除池或作业(通常是作业)时会遇到问题。我收到状态代码“ServiceUnavailable”。
当我手动登录到 Azure 门户时,我可以看到容器已被毫无问题地删除(因此我知道可以建立连接并且可以成功删除 Azure 对象),但请注意池和作业仍然存在。
它似乎没有JobOperations重PoolOperations试策略的概念,所以如果它返回 ServiceUnavailable 状态,是否有其他方法可以让它重试删除池和/或作业几次?或者我应该在本质上是一个 for 循环中尝试它,如果它返回一个错误的状态代码,该循环最多运行 5(或更多)次,或者如果返回一个好的状态代码,则继续执行程序的其余部分?
谢谢您的帮助。
您可以为其本身提供重试策略batchClient,该策略将应用于所有可重试的操作(即,如果是可重试操作,客户端将自动代表您重试该操作)。例如,要添加每 5 秒重试一次的线性重试策略,最多尝试 10 次:
batchClient.CustomBehaviors.Add(RetryPolicyProvider.LinearRetryProvider(TimeSpan.FromSeconds(5), 10))
Run Code Online (Sandbox Code Playgroud)
您可以使用任何现有的重试策略,也可以通过实现IRetryPolicy接口来创建自己的重试策略。
通常,ServiceUnavailable 会由于某些临时中断或问题而自行恢复。然而话虽如此,您可能仍然需要处理即使这些重试策略在最大尝试次数后失败的情况。这取决于您的场景可以接受的情况,例如,作业删除在较长时间内失败可能是可以接受的,但池删除失败超过一段时间是不行的。在这种情况下,您可能希望在系统中包含更强大的重试处理或后备警报和通知。
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |