WebJobs может быть сложно настроить и поддерживать. Особенно при работе с конвейером CI / CD. У меня есть несколько запущенных прямо сейчас, и я собираюсь переместить их в одно из следующих более надежных и обслуживаемых решений:
Мы настраиваем запланированные работы с помощью функции Azure, которая выполняется по расписанию CRON . Он очень надежен и долговечен, так как управляется Azure. Вы просто настроили его, выбросили свой код, а остальное - до Azure, чтобы убедиться, что он срабатывает, когда вы его настроили.
Если вы хотите сделать это в своем собственном приложении, возьмите посмотрите, как работает фоновая служба в ASP. NET Core приложении. Вы можете запустить таймер в фоновой службе, который отключится и выполнит некоторую работу. Имейте в виду, что если ваше приложение масштабируется по горизонтали, вы будете запускать два таймера, что, вероятно, не подходит в вашей ситуации.
Вы можете сделать что-нибудь необычное, например, настроить функцию Azure для достижения конечной точки. на вашем WebAPI в назначенное время. Затем вы можете отправить работу на BackgroundService
, который является одноэлементным, чтобы вы могли заблокировать второй запрос, если вы в данный момент выполняете свою работу.
Мы склонны использовать go последний маршрут. Azure запускает таймер, функция выполняется, отправляет сообщение в конечную точку, конечная точка выполняет работу в фоновом режиме.
Есть множество опций, помимо того, что я упомянул, но это единственные Я имел честь быть архитектором.