Azure WebJob: я вызываю хранимую процедуру сервера sql из веб-задания - PullRequest
2 голосов
/ 01 августа 2020

Мне нужно запустить хранимую процедуру из azure веб-задания в непрерывном режиме. Я написал код в c# и развернул его в своей среде разработки.

После наблюдения в течение 3 или 4 дней я обнаружил, что веб-задания прерываются, если хранимая процедура выполняется в течение длительного времени. Моя процедура занимает около 50 секунд, чтобы вернуть результат. В то время как к этому времени задание прерывается.

Он отлично работает, если хранимая процедура возвращает данные быстро. Если данных больше, а процедура требует времени, я прерываюсь. Но в моем случае я хочу сохранить настройку задания до тех пор, пока процедура не вернет данные.

Я не могу понять это.

Я пробовал следующие варианты

  1. Постоянное включение
  2. stopping_wait_time: 300

Есть ли какие-нибудь предложения?

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете использовать приведенный ниже код, чтобы установить период ожидания для решения вашей проблемы. Для получения дополнительной информации вы можете увидеть этот пост о асинхронном ожидании завершения задачи с таймаутом . Вы также можете выбрать другой код для реализации.

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

Из-за вашего azure веб-задания в непрерывном режиме вы не можете использовать настройку WEBJOBS_IDLE_TIMEOUT. Но ваши веб-задания будут всегда, вы также можете установить WEBJOBS_RESTART_TIME для повторного запуска.

введите описание изображения здесь

...