【问题标题】:Start a background task from a Web Api request从 Web Api 请求启动后台任务
【发布时间】:2013-10-17 21:14:18
【问题描述】:

我有一个 ASP.WEB Web Api 控制器,它需要触发并忘记一些慢代码。什么是这样做的好方法?那就是我希望控制器向浏览器返回一个 HTML 响应,而慢速代码继续在某个地方运行。

从tread pool中获取一个工作线程并传入一个由控制器创建的复杂对象是个好主意吗?还是我需要编写一个单独的 Windows 服务来完成这项工作?

【问题讨论】:

  • 作业完成后是否需要回复?

标签: task-parallel-library asp.net-web-api tpl-dataflow


【解决方案1】:

您的解决方案取决于具体情况或您的情况和您的工作量。 当您收到请求时,您当然可以开始新任务Factory.StartNew。 这在技术上没有任何问题。 不过你应该考虑的事情:

  1. 我必须将数据返回给客户吗?
  2. 此任务将占用 Web 服务器资源,因此如果这些任务需要很长时间并且您获得大量流量,您可能会遇到客户排队等待开始处理的情况。在这种情况下,我认为带有 Windows 服务的后端服务器是一个更好的主意。
  3. 上述所有任务都受 IIS 重置的影响。它们可能会在处理您的后台任务期间被杀死。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    相关资源
    最近更新 更多