【问题标题】:Background job using ASP.NET Web API使用 ASP.NET Web API 的后台作业
【发布时间】:2021-08-03 03:28:58
【问题描述】:

使用 Web API 运行后台作业(其中每个作业可能需要 1-4 小时才能完成)是个好主意吗?

问题:有时我注意到,当工作进程被回收时,作业会重新启动。

还有其他更好的选择来在 Windows 服务器上运行后台作业吗?

【问题讨论】:

  • 您可以使用 Windows 服务运行任何长时间运行的后台进程。您可以点击链接了解更多详情。 Windows service app , Background tasks
  • 同意 csharpd :您的后台任务甚至可能在回收时运行两次。因为下一个工作进程可能会在旧进程仍在运行时启动
  • Web 应用程序擅长一件事:服务 HTTP 请求。请求进来,响应出去。请求从开始到结束通常不应该超过几秒钟。 Web 应用程序不擅长处理长时间运行的任务。

标签: asp.net .net asp.net-web-api


【解决方案1】:

有一些选项可用于在 ASP.NET 中实现和运行计划作业。一些流行的有 Quartz.Net - https://www.quartz-scheduler.net/、FluentScheduler - https://github.com/fluentscheduler/FluentScheduler 和 HangFire - https://www.hangfire.io/

以下是一些很好的示例,可以帮助您入门: (1)使用 Quartz.Net[^] 在 ASP.NET 中计划任务 - https://www.mikesdotnetting.com/article/254/scheduled-tasks-in-asp-net-with-quartz-net (2)在 ASP.NET Core 中使用 Hangfire 调度后台作业[^] - http://www.c-sharpcorner.com/article/schedule-background-jobs-using-hangfire-in-asp-net-core/

【讨论】:

  • 我已经在使用 Hangfire 来安排作业,但是如果工作进程在运行作业时被回收怎么办。我认为正如@csharpd 所说,将 Windows 服务用于长时间运行的后台作业是正确的。
猜你喜欢
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 2018-01-10
  • 2017-12-07
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 2017-06-30
相关资源
最近更新 更多