gpt4 book ai didi

javascript - 如何以异步方式使用 pdfkit npm

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:14 24 4
gpt4 key购买 nike

我在 node.js 中编写了一个应用程序,它接受用户的输入并基于几个模板生成 pdf 文件。

我正在使用pdfkit npm 用于此目的。我的应用程序正在生产中运行。但我的申请速度很慢,原因如下:

我面临什么问题:

  • 它正在以同步方式工作。我可以通过给出一个例子来解释它 - 假设一个请求到达应用程序以生成 pdf,开始处理,处理后返回带有生成的 pdf url 的响应。但如果有多个请求到达服务器,它会一一处理每个请求(以同步方式)。
  • 队列中的所有请求都必须等待前一个请求完成。
  • 我的应用程序出现超时内部服务器错误的最长时间。

我无法更改库,为什么?

  • 我用 js 为 pdfkit 编写了 40 个模板。每个模板有 1000 - 3000 行。
  • 如果我要更改库,我必须根据新库重写这些模板。
  • 需要花费数月的时间来正确重写和测试它。

我现在使用的解决方案:

  • 我现在正在管理一个队列,一旦有请求到来,它就会排队并发送回一条令人满意的消息以响应用户。

为什么这个解决方案不可行?

  • 请求成功后,应向用户提供有效的 pdf 网址。但在队列方法中,用户只收到一条确认消息。稍后将在队列中处理 pdf。

我现在正在寻求什么样的解决方案?

  • 有什么方法可以让这个应用程序成为多线程/异步的,以便它能够一次处理多个请求而不阻塞资源?

请救救我的生命。

最佳答案

我不想向您透露,但按照任务进入的顺序进行计算是 Node 的一个非常基本的部分。听起来加载这些模板是一项 CPU 密集型任务,并且由于 Node 是单线程的,因此它会按照它们进入的顺序将它们从队列中删除。

另一方面,任何框架都会有类似的问题。 Node 是单线程意味着它实际上非常高效,因为它不会因上下文切换而丢失周期。

您的程序可以同时处理多少个 PDF 生成?您在什么类型的硬件上运行它?如果每秒有几个请求失败,则可能需要进行编程修复。

对于 Node 来说,异步的事情越多越好。例如,任何时候您读取文件时,都应该是异步的。

您可以发布 PDF 创建请求功能之一的代码吗?

关于javascript - 如何以异步方式使用 pdfkit npm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45932416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com