Azure Functions 上的 FixedDelayRetry 属性无法正常工作
FixedDelayRetry attribute on Azure Function doesn't work properly
自从最新的 Microsoft.Azure.WebJobs 程序集发布以来,现在可以通过 [FixedDelayRetry]
等属性设置 Azure 函数的重试策略。我对这个功能很感兴趣,因为我有一个 Blob Trigger Function,它在失败时默认重试五次,而我对重试策略功能不感兴趣。我希望函数在失败时不重试,或者只重试一次。
所以我在我的函数中设置了这个属性,如下所示,并指出了函数失败时的最大重试次数:
public class Function1
{
private readonly IGremlinService _gremlinService;
private readonly TelemetryClient _telemetryClient;
public Function1(IGremlinService gremlinService, TelemetryConfiguration telemetryConfiguration)
{
this._gremlinService = gremlinService;
this._telemetryClient = new TelemetryClient(telemetryConfiguration);
}
[FunctionName(nameof(Function1))]
[FixedDelayRetry(1, "00:00:10")]
public async Task Run([BlobTrigger("files/{directory}/{name}.pdf", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, ILogger logger)
{
try
{
//my lengthy code not related to the issue
}
}
}
当我在我的测试环境中使用存储模拟器和我的 CosmosDb 模拟器尝试这段代码时,它运行得非常好,函数在遇到异常时只重试一次。
但是,当我 运行 我的函数在 Azure 平台上时,它不是只在失败时重试一次,而是重试……九次。我将最大重试次数设置为 5,这次函数重试了 25 次。我的感觉是,函数没有重试属性中指定的次数,而是将该数字乘以默认重试策略 5。在下面你可以看到我的日志,其中函数明显重试了 10 次:
我做错了什么?
自从最新的 Microsoft.Azure.WebJobs 程序集发布以来,现在可以通过 [FixedDelayRetry]
等属性设置 Azure 函数的重试策略。我对这个功能很感兴趣,因为我有一个 Blob Trigger Function,它在失败时默认重试五次,而我对重试策略功能不感兴趣。我希望函数在失败时不重试,或者只重试一次。
所以我在我的函数中设置了这个属性,如下所示,并指出了函数失败时的最大重试次数:
public class Function1
{
private readonly IGremlinService _gremlinService;
private readonly TelemetryClient _telemetryClient;
public Function1(IGremlinService gremlinService, TelemetryConfiguration telemetryConfiguration)
{
this._gremlinService = gremlinService;
this._telemetryClient = new TelemetryClient(telemetryConfiguration);
}
[FunctionName(nameof(Function1))]
[FixedDelayRetry(1, "00:00:10")]
public async Task Run([BlobTrigger("files/{directory}/{name}.pdf", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, ILogger logger)
{
try
{
//my lengthy code not related to the issue
}
}
}
当我在我的测试环境中使用存储模拟器和我的 CosmosDb 模拟器尝试这段代码时,它运行得非常好,函数在遇到异常时只重试一次。
但是,当我 运行 我的函数在 Azure 平台上时,它不是只在失败时重试一次,而是重试……九次。我将最大重试次数设置为 5,这次函数重试了 25 次。我的感觉是,函数没有重试属性中指定的次数,而是将该数字乘以默认重试策略 5。在下面你可以看到我的日志,其中函数明显重试了 10 次:
我做错了什么?