Node JS - 文件生成器架构
Node JS - file generator architecture
需要将文件生成器 REST API 端点添加到 Web 应用程序。到目前为止,我想出了以下想法:
- 客户端向端点发送文件参数
- 服务器接收请求并使用 AMQP 将参数发送到专用服务
- 专用服务创建一个文件,将其放入服务器文件夹并发送响应,该文件以文件名创建
- 端点用文件向客户端发送响应
我不确定在服务器上长时间保留 REST 请求是否是个好主意。但仍然不想使用生成的 link 或套接字的电子邮件。
是否需要在request中设置timeout时间才不会因为等了很久而被拒绝?
据我所知,休息 api 调用的最大超时时间为 120 秒。如果服务创建文件需要更多时间,那么我需要使用套接字,对吗?
我处理类似的方法是做这样的事情:
- 客户端发送文件请求。
- 服务器将此添加到状态为 'requested' 的队列中,并几乎立即响应(对客户端)响应,其中包括 URL 以检索文件。
- 某些背景 thread/worker/webJob/etc 运行 在与实际 Web 服务器不同的进程中,并不断监视队列 - 当它看到新条目出现时,它会将队列更新为 'being generated' state & 开始生成文件。完成后,它将队列更新为 'ready' 状态并继续...
- 当服务器收到下载文件的请求时(通过它给客户端的URL),它可以检查队列中文件的状态。如果还没有准备好,它可以给出一个响应来表明这一点。如果准备就绪,它可以简单地响应文件内容。
- 客户端可以使用对初始请求的响应在适当的时间长度后重新查询给定的url,或者每隔几秒或任何最合适的时间重复查询。
您需要一些方法来存储系统的两个部分都可以轻松访问的队列 - 数据库是显而易见的,但您还可以使用其他东西...
这种方法避免了在请求线程上做太多事情或在服务器编译文件时让客户端 'hanging' 处理请求。
这就是我在这些情况下(成功地)所做的。它还可以很容易地向队列中添加诸如生命周期之类的东西,因此文件也可以在一段时间后自动 'expire'...
需要将文件生成器 REST API 端点添加到 Web 应用程序。到目前为止,我想出了以下想法:
- 客户端向端点发送文件参数
- 服务器接收请求并使用 AMQP 将参数发送到专用服务
- 专用服务创建一个文件,将其放入服务器文件夹并发送响应,该文件以文件名创建
- 端点用文件向客户端发送响应
我不确定在服务器上长时间保留 REST 请求是否是个好主意。但仍然不想使用生成的 link 或套接字的电子邮件。
是否需要在request中设置timeout时间才不会因为等了很久而被拒绝?
据我所知,休息 api 调用的最大超时时间为 120 秒。如果服务创建文件需要更多时间,那么我需要使用套接字,对吗?
我处理类似的方法是做这样的事情:
- 客户端发送文件请求。
- 服务器将此添加到状态为 'requested' 的队列中,并几乎立即响应(对客户端)响应,其中包括 URL 以检索文件。
- 某些背景 thread/worker/webJob/etc 运行 在与实际 Web 服务器不同的进程中,并不断监视队列 - 当它看到新条目出现时,它会将队列更新为 'being generated' state & 开始生成文件。完成后,它将队列更新为 'ready' 状态并继续...
- 当服务器收到下载文件的请求时(通过它给客户端的URL),它可以检查队列中文件的状态。如果还没有准备好,它可以给出一个响应来表明这一点。如果准备就绪,它可以简单地响应文件内容。
- 客户端可以使用对初始请求的响应在适当的时间长度后重新查询给定的url,或者每隔几秒或任何最合适的时间重复查询。
您需要一些方法来存储系统的两个部分都可以轻松访问的队列 - 数据库是显而易见的,但您还可以使用其他东西...
这种方法避免了在请求线程上做太多事情或在服务器编译文件时让客户端 'hanging' 处理请求。
这就是我在这些情况下(成功地)所做的。它还可以很容易地向队列中添加诸如生命周期之类的东西,因此文件也可以在一段时间后自动 'expire'...