【发布时间】:2020-02-19 00:26:12
【问题描述】:
场景:我有一个带有“删除”ASP.NET Core 控制器操作的 Web 服务。该实现包括两个步骤:一个是廉价的,之后其他操作已经无法再看到已删除的数据,另一个是执行实际删除的长时间运行的第二个步骤。
是否可以使用Task.Run 进行第二次操作并且从不等待它并很快返回调用者?我知道这个任务可能会由于应用程序关闭而丢失,但它是否允许在 ASP.NET Core 中使用 Task.Run 将工作卸载到后台并且从不等待生成的任务?
【问题讨论】:
-
@Moho 后台任务用于应该一直运行的后台服务,例如,类似 cronjob 的任务。它们是 AFAIK,不适用于控制器的一次性工作。
-
我们讨论了多久? 10秒? 1小时?一天?
-
大约两到五分钟。但我对理论上的问题也很感兴趣。
-
@DR 你错了。检查Queued background tasks 部分。您还可以使用一些后台任务框架(例如 Hangfire)来支持后台任务的可扩展性,并在服务器停止和错误时重试。
标签: asp.net-core asp.net-core-2.1