Я пытаюсь запустить повторяющуюся работу Hangfire ежедневно в 9:00. Вот что я хочу сделать-
RecurringJob.AddOrUpdate(() => MyMethod(), "* 9 * * *");
Где я должен поместить эту строку кода?
Извините, если это глупый вопрос.
Я пытаюсь запустить повторяющуюся работу Hangfire ежедневно в 9:00. Вот что я хочу сделать-
RecurringJob.AddOrUpdate(() => MyMethod(), "* 9 * * *");
Где я должен поместить эту строку кода?
Извините, если это глупый вопрос.
Предположим, вы используете .Net Core
, где вы можете найти файл startup.cs
. В этом вы можете найти метод Configure()
. Внутри метода вы можете использовать этот фрагмент строки сразу после app.UseHangfireDashboard()
и app.UseHangfireServer()
, который предназначен для настройки панели управления Hangfire, и это необязательно. Не забудьте Зарегистрировать Hangfire Services в методе ConfigureServices()
, который можно найти в самом startup.cs
.
Вы можете зарегистрировать Hangfire Services внутри ConfigureServices()
в Startup.cs.
public void ConfigureServices(IServiceCollection services)
{
/*
other services
*/
services.AddHangfire(x => x.UseSqlServerStorage("YOUR_HangfireServerConnectionString"));
/*
services.AddMvc()
*/
}
Вы можете установить Hangfire Cron внутри Configure()
в Startup.cs.
public void Configure(IApplicationBuilder app)
{
app.UseHangfireDashboard();
app.UseHangfireServer();
RecurringJob.AddOrUpdate(() => MyMethod(), "* 9 * * *");
}
для получения дополнительной информации перейдите по ссылке< /а>
ОБНОВЛЕНИЕ
Выражение cron * 9 * * *
означает, что задание будет запускаться каждые минуты после 9 (24-часовой формат) системного времени времени UTC.
Для создания повторяющегося задания ежедневно в 9:00 выражение должно быть 0 9 * * *
см. здесь *_*_*" rel="noreferrer">выражения cron
RecurringJob.AddOrUpdate("YOUR_UNIQUE_STRING",() => MyMethod(), "* 9 * * *");
- person Farshan; 04.04.2018
RecurringJob.AddOrUpdate(() => MyMethod(), Cron.Daily(9,0));
- person Wlad Neto; 22.03.2019
В asp.net вы можете добавить Microsoft.Owin Middleware и OwinStartup в свой проект через этот nugetpackage, а затем используйте файл startup.cs для настройки Hangfire. Мы всегда используем метод конфигурации файла Startup.cs для повторяющихся заданий зависания:
public void Configuration(IAppBuilder app)
{
app.UseHangfireDashboard();
app.UseHangfireServer();
RecurringJob.AddOrUpdate(19872.ToString(),() => MyMethod(), Cron.Daily(9, 0));
}
Я использую конечную точку веб-API для создания заданий. Я всегда даю повторяющимся заданиям уникальный идентификатор, например guid. Таким образом, если мне нужно отредактировать выражение хрона повторяющихся заданий и обновить его через конечную точку веб-API.
Итак, в веб-API у меня есть: -
[HttpPost]
[Microsoft.AspNetCore.Mvc.Route("daily")]
public IActionResult AddOrUpdateDailyReportJob([FromBody]JobOptions options)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var result = _clientReportJobCreator.AddOrUpdateDailyClientReport(options.JobId, options.ChronExpression);
return Ok(result);
}
И такой сервисный метод, который добавляет или обновляет существующее повторяющееся задание.
public JobCreationResult AddOrUpdateDailyClientReport(string jobId, string chronExpression)
{
try
{
RecurringJob.AddOrUpdate(jobId, () => _clientDailyReportService.Run(), chronExpression);
var result = new JobCreationResult
{
JobId = jobId,
Success = true
};
return result;
}
catch (Exception ex)
{
var result = new JobCreationResult
{
JobId = jobId,
Success = false,
Errors = new List<string>()
{
$"{ex.Message}"
}
};
return result;
}
}