【问题标题】:progress in a long running API? (Nodejs & express)progress in a long running API? (Nodejs & express)
【发布时间】:2023-02-25 15:55:00
【问题描述】:

我制作了一个生成 3d 模型的 API。有时这可能需要很长时间(> 5 分钟)。 当它成功时,它以文本形式返回状态代码为 200 的 3d 模型。当失败时,我返回状态代码为 400 的错误代码。

有什么方法/机制可以返回进程的进度吗?我怎么能这样做?浏览器将如何阅读?

干杯,谢谢!

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    您可以为此使用下一个逻辑:

    1. 客户端请求/generateModel生成模型;
    2. 服务器返回operation_id
    3. 现在客户端可以请求/getStatus并获得operation_id
    4. 服务器会回答进度和结果:{ status: 0, progress: 0.02 }。 可能的状态:
      • 0 - 仍在不断进步 (0.00-0.99)({ status: 0, progress: 0.02 });
      • 200 - 完成({ status: 1 });
      • other numbers-错误({ status: 500, message: "Internal error" });
      1. 客户端每隔一定时间向服务器询问状态;
      2. 当客户端收到done状态的响应时,客户端请求模型/getModel
      3. 如果客户端收到error状态的响应,将显示。

    【讨论】:

      【解决方案2】:

      我最终使用了 bullMQ。它提供了很多功能,也适用于运行时间较长的进程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-17
        • 2022-12-02
        • 1970-01-01
        • 1970-01-01
        • 2021-04-23
        • 2022-12-02
        • 2016-11-25
        • 1970-01-01
        相关资源
        最近更新 更多