Как предотвратить повторное выполнение задания Hangfire после 30 минут непрерывного выполнения

Я работаю над веб-приложением asp.net mvc-5 и столкнулся с проблемой при использовании инструмента Hangfire для запуска длительных фоновых заданий. Проблема в том, что если выполнение задания превышает 30 минут, то Hangfire автоматически запустит другое задание, поэтому у меня получится запустить два одинаковых задания одновременно.

Теперь у меня есть следующее: -

  1. Asp.net mvc-5
  2. IIS-8
  3. Hangfire 1.4.6
  4. Windows server 2012

Теперь я определил повторяющееся задание при перестрелке, которое будет запускаться в 17:00 каждый день. Фоновое задание в основном сканирует нашу сеть на наличие серверов и vms и обновляет БД, а повторяющееся задание отправит электронное письмо после завершения выполнения. Повторяющаяся работа работала хорошо, когда ее выполнение составляло менее 30 минут. Но сегодня, когда наша система расширяется, повторяющаяся работа завершается через 40 минут вместо 22-25 минут, как это было раньше. и я получил 2 электронных письма вместо одного электронного письма (и время между электронными письмами было около 30 минут). Теперь я заново запускаю задание вручную и заметил, что проблема заключается в следующем: -

"когда повторяющееся задание достигает 30 минут непрерывного выполнения, новый экземпляр повторяющегося задания будет начать, поэтому у меня будет два экземпляра вместо одного, запущенного одновременно, поэтому я получил 2 электронных письма. "

Теперь, если повторяющееся задание занимает менее 30 минут (например, 29 минут ) Я не буду сталкиваться с какими-либо проблемами, но если выполнение повторяющегося задания превышает 30 минут, то по какой-либо причине или из-за другого зависания начнется новое задание. хотя, когда я получаю доступ к панели управления hangfire во время выполнения задания, я могу обнаружить, что существует только одна активная работа, когда я наблюдаю за нашей БД, я вижу из профилировщика sql, что есть две работы, обращающиеся к БД. это происходит через 30 минут после начала повторяющейся работы (в нашем случае в 17:30), и именно поэтому я получил 2 сообщения электронной почты, что означает, что в фоновом режиме выполнялось 2 повторяющихся задания вместо одного

.

Так может кто-нибудь посоветовать по этому поводу, пожалуйста, как я могу избежать зависания от автоматического запуска нового повторяющегося задания, если текущее выполнение повторяющегося задания превышает 30 минут? Спасибо

8
задан Maksym Labutin 8 January 2019 в 11:09
поделиться