#hangfire #hangfire-sql #hangfire-console
#hangfire #hangfire-sql #hangfire-консоль
Вопрос:
У меня есть довольно сложный sql-скрипт, который очищает мою базу данных и будет время от времени запускаться вручную. Сразу после запуска скрипта я должен запустить повторяющееся задание hangfire, которое обычно выполняется только один раз в день.
Чтобы не забыть запустить скрипт, я хотел бы запустить выполнение непосредственно из скрипта sql. Есть ли простой способ изменить одну из таблиц hangfire для выполнения этой задачи?
Версия ядра Hangfire 1.7.5
ОБНОВЛЕНИЕ: К сожалению, я не нашел ни одной таблицы hangfire, содержащей повторяющиеся задания. Поэтому я предполагаю, что они вообще не сохраняются. Можно ли запустить задание, просто вставив новую строку в HangFire.Таблица заданий? Или это плохая идея?
Комментарии:
1. Я также хотел бы запустить задание из базы данных. Итак, поскольку я не нашел решения.
Ответ №1:
Извините, что не ответил на этот вопрос здесь, в stackoverflow. Из-за отсутствия чистого решения hangfire я, наконец, реализовал некоторую пользовательскую логику с помощью отдельной таблицы «DatabaseState».
В моей таблице DatabaseState есть следующие поля: DateOfDbUpdate(datetime) и HangfireExecuted(bool). Всякий раз, когда я запускаю свой сложный SQL-скрипт, я просто вставляю новую запись в таблицу с текущим временем и HangfireExecuted = false .
В коде я создал повторяющееся задание hangfire, которое каждые несколько секунд проверяет, есть ли новая запись в таблице DatabaseState с HangfireExecuted == false . Если он найдет такую запись, он запустит задание очистки.
К сожалению, это не очень чистое и прямое решение. Я был бы рад, если кто-то другой предложит реальное решение hangfire.