POST请求并按顺序获取响应(NodeJS,python客户端)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POST请求并按顺序获取响应(NodeJS,python客户端)相关的知识,希望对你有一定的参考价值。

我有一个Node.js服务器不断接收python客户端的POST请求来调用后端服务。 Promise在Node服务器的REST路由器中用于调用后端服务,然后将结果返回给客户端。

在node.js上:

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

客户端按顺序发送请求消息(例如,逐行读取文件)并逐行将结果保存在另一个文件中。

在client.py中:

for line in read_file:
        time.sleep(0.5)
        start_new_thread(request_to_server_and_write_to_file, (line))

但是,由于后端处理速度因每个请求消息的复杂性而变化,因此返回给客户端的结果与发送的请求的顺序不同。

我该怎么做才能使这个结果与请求的顺序相同?

答案

这是异步编程的典型案例,Python的配备不是很好。幸运的是有asyncio库。如果安装它,可以使用async await模式调用函数。这样你就可以在调用新服务器之前等待服务器结果。

这是一个很好的解释:https://www.blog.pythonlibrary.org/2016/07/26/python-3-an-intro-to-asyncio/

以上是关于POST请求并按顺序获取响应(NodeJS,python客户端)的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器中输入网站域名并按下回车的详细过程

在浏览器中输入网站域名并按下回车

nodejs 怎么获取post请求的json数据

在NodeJS中发送不同的POST响应

如何让nodejs的多个http请求全部响应回来后才让程序往下走

如何让nodejs的多个http请求全部响应回来后才让程序往下走