我有一个Node.js服务器不断接收python客户端的POST请求来调用后端服务。 Promise在Node服务器的REST路由器中用于调用后端服务,然后将结果返回给客户端。
在node.js上:
replaceAll
客户端按顺序发送请求消息(例如逐行读取文件)并逐行将结果保存在另一个文件中。
在client.py中:
router.post("/result/", jsonParser, function (req, res) {
callService(req.body)
.then(function(result) {
res.json({
result: result
});
}, function (error) {
res.status(400);
});
}
var callService = function(input) {
return new Promise((resolve,reject) => {
//do something;
resolve(result);
}
}
然而,由于后端处理速度因每条请求消息的复杂性而有所不同,因此返回到客户端的结果与发送的请求的顺序不同。
如何使此结果与请求的顺序相同?
答案 0 :(得分:0)
这是异步编程的典型案例,Python的配备不是很好。幸运的是有asyncio库。如果安装它,可以使用async await模式调用函数。这样你就可以在调用新服务器之前等待服务器结果。
这是一个很好的解释: https://www.blog.pythonlibrary.org/2016/07/26/python-3-an-intro-to-asyncio/