Hangfire - длительные задания повторяются через 30 минут - PullRequest
1 голос
/ 07 ноября 2019

У меня есть задание, которое обрабатывает некоторые тяжелые данные, и оно будет работать более часа.

Проблемы в том, что после 30 минут работы запускается другой работник и не удается завершить с исключениями, связанными с распределенной блокировкой:

System.Net.Sockets.SocketException (104): Connection reset by peer

Обработка изображения заданий

Я использую MySql Storage с опциями из библиотеки Hangfire.MySql.Core версии 2.2.5:

new MySqlStorageOptions
  {
    TransactionIsolationLevel = IsolationLevel.ReadCommitted,
    QueuePollInterval = TimeSpan.FromSeconds(15),
    JobExpirationCheckInterval = TimeSpan.FromHours(1),
    CountersAggregateInterval = TimeSpan.FromMinutes(5),
    PrepareSchemaIfNecessary = true,
    DashboardJobListLimit = 50000,
    TransactionTimeout = TimeSpan.FromMinutes(1),
    TablesPrefix = ""
   })

Я прочитал все, что нашел в Интернете и в документации, и там написано, что нужно его использоватьс:

InvisibilityTimeout = TimeSpan.FromHours(3) 

Но этот параметр устарел с версии Hangfire> 1.5.

Тайм-аут невидимости устарел

Я использую Hangfire.Core 1.7.7 и эта проблема сохраняется после 30 минут работы.

РЕДАКТИРОВАТЬ :

Пробовал с:

InvisibilityTimeout = TimeSpan.FromHours(3)

И задание работает в течение часа без проблем.

Мне не нравится устаревшее решение, и оно будет удалено в Hangfire 2.0.

Они говорят:

"Новая реализация Hangfire.SqlServer использует простые старые транзакции для извлечения фоновых заданий и скрытия их от других работников."

-Но это написано для SQL Server реализации, я использую MySql Storage.

Кто-нибудь сталкивался с такой же проблемой с MySql Storage?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...