首页 > 解决方案 > Azure WebJob:我正在从 Web 作业调用 sql server 存储过程

问题描述

我必须以连续模式从 azure webjob 运行存储过程。我已经用 c# 编写了代码,并在我的开发环境中部署了相同的代码。

在监视了 3 或 4 天后,我发现,如果存储过程运行很长时间,webjobs 就会中止。我的程序需要大约 50 秒才能返回输出。那时工作中止。

如果存储过程快速返回数据,它工作正常。好像数据更多并且程序需要时间,我被中止了。但就我而言,我希望保持工作调整,直到程序返回数据。

我无法弄清楚。

我尝试了以下选项

  1. 始终开启 ON
  2. 停止等待时间:300

有什么建议吗。?

标签: azure-webjobsazure-webjobs-continuous

解决方案


您可以使用以下代码设置超时时间来解决您的问题。有关更多详细信息,您可以查看这篇关于异步等待 Task 以 timeout 完成的帖子。您也可以选择其他代码来实现。

int timeout = 1000;
var task = SomeOperationAsync();
if (await Task.WhenAny(task, Task.Delay(timeout)) == task) {
    // task completed within timeout
} else { 
    // timeout logic
}

由于您的 azure webjob 处于连续模式,您无法使用WEBJOBS_IDLE_TIMEOUT设置。但是您的 webjobs 将始终打开,您也可以设置WEBJOBS_RESTART_TIME重新启动。

在此处输入图像描述


推荐阅读