【发布时间】:2021-11-08 11:17:03
【问题描述】:
我有这个每周六运行的 Azure WebJob 函数。但是 Azure 函数总是标记为失败,但是当我检查日志时,作业在完成后成功运行。
已在配置中增加 WEBJOBS_IDLE_TIMEOUT 和 SCM_COMMAND_IDLE_TIMEOUT 但仍标记为失败。但是还是出现这个错误。
命令 'cmd /c ""Software.. ...' 由于 121 秒内没有输出或 CPU 活动而中止。如果需要,您可以增加 SCM_COMMAND_IDLE_TIMEOUT 应用设置(或 WEBJOBS_IDLE_TIMEOUT,如果这是 WebJob)。
要处理的数据数量是不可预测的,它取决于输入值的用户数量,因此处理时间在 1 到 40 分钟之间,最少数据为 1 分钟,较大数据为 40 分钟。
我目前正在使用最新版本的 WebJob SDK。
这是代码 sn-p。
public class ProcessDataFunction
{
private readonly IProcessData _processData;
public ProcessDataFunction(IProcessData processData)
{
_processData = processData;
}
[Singleton]
public async Task ProcessDataMessage([TimerTrigger("0 0 12 * * 6", RunOnStartup = true)] TimerInfo myTimer, ILogger logger, CancellationToken cancellationToken)
{
logger.LogInformation("Long running Job Started...");
var dateSync = DateTimeOffset.UtcNow;
await _processData.ProcessAsync(cancellationToken, dateSync);
logger.LogInformation("Long running Job Finished...");
}
}
class Program
{
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddTimers();
b.AddAzureStorageCoreServices();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
builder.ConfigureServices((context, services) =>
{
services.ConfigureHttpClients(context.Configuration)
.ConfigureDataProcessor()
.ConfigureDbContext(context.Configuration);
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
【问题讨论】:
标签: azure azure-functions azure-webjobs azure-webjobssdk