Hangfire выполняет задания последовательно

Я использую HangFire, размещенный в IIS, с пулом приложений, установленным на "AlwaysRunning". Я использую расширение Autofac для DI. В настоящее время при выполнении фоновых заданий с помощью HangFire они выполняются последовательно. Обе работы похожи по своей природе и включают в себя File I/O. Первое задание выполняется и начинает генерировать необходимый файл. Второе задание выполняется и оно начинает выполняться. Затем он прекратит выполнение до тех пор, пока не будет завершено первое задание, после чего второе задание будет возобновлено. Я не уверен, если это проблема, связанная с DI и продолжительностью жизни. Я склонен думать не так, как я создаю все с экземпляром в зависимости от области. Я использую owin для начальной загрузки Hangfire, и я не передаю никаких опций BackgroundServer, а также не применяю никаких подсказок через атрибуты. Что будет вызывать последовательное выполнение заданий? Я использую конфигурацию по умолчанию для рабочих. Я отправляю запрос на публикацию в web api и добавляю задания в очередь со следующим BackgroundJob.Enqueue<ExecutionWrapperContext>(c => c.ExecuteJob(job.SearchId, $"{request.User} : {request.SearchName}"));

Заранее спасибо

2 ответа

Это то, что ты искал?

var hangfireJobId = BackgroundJob.Enqueue<ExecutionWrapperContext>(x => x.ExecuteJob1(arguments));
hangfireJobId = BackgroundJob.ContinueWith<ExecutionWrapperContext>(hangfireJobId, x => x.ExecuteJob2(arguments));

Это в основном выполнит первую часть, и когда это закончится, она начнет вторую часть

Недавно я искал это точное поведение, и мне удалось получить его с помощью этого атрибута.

[DisableConcurrentExecution(<timeout>)]

Может быть, вы применили этот атрибут в работе или в глобальном масштабе?

Другие вопросы по тегам