Amadeus Hein
Amadeus Hein

Reputation: 716

How to handle a reply for long-running REST request?

Background: We have import-functions that can take anywhere from a few seconds to 1-2 hours to run depending on the file being imported. We want to expose a new way of triggering imports, via a REST request.

Ideally the REST service would be called, trigger the import and reply with a result when done. My question is: since it can take up to two hours to run, is it possible to reply or will the request timeout for the caller? Is there a better way for this kind of operation?

Upvotes: 0

Views: 1377

Answers (1)

Danny Varod
Danny Varod

Reputation: 18118

What I use in these cases is an asynchronous operation that returns no result (void function result in case of c# Web API), then send the result asynchronously using a message queue.

E.g.

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

Upvotes: 1

Related Questions