Rest API,在哪里把沉重的计算在路线?

我打算devise一个Rest API,它接收用户请求并执行大量计算并返回结果。

我是networking编程新手。 所以只需要熟悉基本的API服务。

我知道的:

1)使用JSON发送post方法的请求,因为数据不是那么简单。 2)我遵循一些例子,并基本成功。

所以我觉得我最好开始编写繁重的计算部分。

我想要如下。

1)接收发布请求,并开始计算

2)刚刚计算后发送“工作消息”(我想我可以做re.send(“味精”))

我的问题

1)但是我应该把我的重计算放在哪里?

2)因为我已经回复了“味精”,如果没有请求,我怎样才能发送另一个内容?

3)我已经阅读了中间件,感觉像中间件处理接收请求和发送响应之间的事情。 我对吗?

如果你能给我一个简单的例子,这将是非常好的。

实现这一点的最好方法可能是在后台执行繁重的服务器端处理,并为客户端检查作业是否完成提供了一种方法。

例如,假设您想运行一些繁重的计算。 你可以创build一个像这样的资源:

POST /calculator 

客户端POST一个计算,然后资源排队计算工作以供以后处理(可能通过服务器上的一些cron作业)并用作业资源作出响应:

 { "id": 123456, "status": "pending" } 

然后,客户端可以随时检查作业是否完成,方法是检查/ jobs资源:

 GET /jobs/123456 

最初可能会再次回应:

 { "id": 123456, "status": "pending" } 

那么当它正在进行时:

 { "id": 123456, "status": "in_progress" } 

当它完成时:

 { "id": 123456, "status": "done", "result": <some object that contains the result of the calculation> }