javascript - 保留请求上下文是否有时间限制?
问题描述
我有一个 NodeJS 应用程序,它使用 socket.io 来接收数据流。流式传输时间最长可达 30 分钟。流式传输完成后,套接字断开连接,并调用一系列函数。这些功能也可能非常耗时。
由于这是一个整体系统,所有这些事件都链接在一个上下文中。所有功能都是异步的,因此它不会阻塞事件循环。
将功能分解为单独的微服务将消除长时间保留上下文的需要。但是对于 API 服务器应该维护请求上下文多长时间有行业标准时间限制吗?或者,如果我们有足够的资源,时间真的不是问题吗?
解决方案
请求上下文只是一个带有一堆属性的 Javascript 对象。长时间挂在对它的引用仅意味着该对象的垃圾收集将被延迟。唯一真正的后果是更高的峰值内存使用率。
但是对于 API 服务器应该维护请求上下文多长时间有行业标准时间限制吗?
在这方面我没有了解行业标准,我认为这与标准的做事方式无关,因为它与您自己的服务器如何工作和配置有关。如果您需要流式传输 30 分钟(从而保持请求打开那么长时间),那么请求上下文可能会持续那么长。
或者,如果我们有足够的资源,时间真的不是问题吗?
这实际上只是关于资源使用。
您没有向我们展示您的任何代码,但是如果您已经完成了实际的请求对象并且只是有其他事情要做,恰好将请求对象保持在范围内,那么您可以重组您的代码这样您就可以继续做这些您需要做的其他事情(不访问请求/响应对象),同时允许它们被垃圾收集。
推荐阅读
- reactjs - 通过单击某个条件 Ant Design 表格展开表格的一行
- css - 尝试使用顺风容器使图像居中时遇到问题 - 图像右侧的不可见填充
- django - 如何自定义 Django 项目的管理页面?
- java - 如何在 Java 中组织单元测试?
- apache-spark - PySpark Kafka py4j.protocol.Py4JJavaError: 调用 o28.load 时出错
- c++ - 模板参数包指针的大小
- javascript - 在第 2 季度打开 webhook 后,Dialogflow 内联无法计数
- python - NameError:名称“tkinter”未定义
- c++ - 修复重载运算符“+”的使用不明确?
- java - Micronaut SPA 控制器