如何处理长时间运行的REST请求的回复?

时间:2015-04-28 08:02:17

标签: c# rest

后台:我们的导入功能可能需要几秒到1-2小时才能运行,具体取决于导入的文件。我们希望通过REST请求公开一种触发导入的新方法。

理想情况下,将调用REST服务,触发导入并在完成后回复结果。我的问题是:因为它可能需要长达两个小时才能运行,是否可以回复或请求超时的呼叫者?这种操作有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我在这些情况下使用的是一个不返回结果的异步操作(在c#Web API的情况下返回void函数),然后使用消息队列异步发送结果。

E.g。

[HttpPut]
[Route("update")]
public void Update()
{
    var task = Task.Run(() => this.engine.Update());
    task.ContinueWith(t => publish(t, "Update()"));
}