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> }