【问题标题】:POST request and get response in order (NodeJS, python client)POST 请求并按顺序获取响应(NodeJS、python 客户端)
【发布时间】:2018-03-02 00:51:31
【问题描述】:

我有一个 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 node.js promise


    【解决方案1】:

    这是一个典型的异步编程案例,Python 并没有很好地解决这个问题。幸运的是,有 asyncio 库。如果您安装它,您可以使用异步等待模式调用您的函数。这样,您将能够在调用新结果之前等待服务器结果。

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

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多