当前位置: 首页 > 面试题库 >

成功执行后,我的nodejs脚本没有自行退出

拓拔高畅
2023-03-14
问题内容

从数据库表和solr中读取数据后,我编写了一个脚本来更新数据库表。我正在使用asyn.waterfall模块。问题在于,成功完成所有操作后,脚本不会退出。我使用过的数据库连接池也认为可能正在创建脚本以无限期等待。我想将此脚本放在crontab中,如果无法正确退出,它将不必要地创建大量实例。


问题答案:

我刚刚经历了这个问题。

仅仅使用的问题process.exit()是我正在处理的程序正在创建句柄,但从未销毁它们。

它正在处理目录并将数据放入 orientdb中

因此,我学到的一些东西是在摆脱引用之前需要关闭数据库连接。但这process.exit()并不能解决所有情况。

当我的项目处理了2,000个文件时。它将剩下约500个,多余的手柄将填满可用的工作内存。这意味着它将无法继续。因此永远不会到达process.exit末尾。

另一方面,如果关闭了要求应用程序保持打开状态的项目,则可以从源头上解决问题。

我能够使用的两个“未记录的功能”是

process._getActiveHandles();
process._getActiveRequests();

我不确定还有哪些其他功能可以帮助调试这些类型的问题,但是这些功能真的很棒。

它们返回一个数组,通过使用这些方法,您可以确定过程中发生的事情。

我只是希望这可以帮助其他在这篇文章中绊脚的人。



 类似资料:
  • 问题内容: 我正在通过Jenkins构建Qt GUI应用程序。我添加了3个构建步骤: 构建测试可执行文件 运行测试可执行文件 用gcovr编制覆盖率报告 由于某种原因,用于运行测试可执行文件的shell任务在执行后会停止。即使是简单的也不运行。测试是使用Google Test编写的,并输出xUnit XML文件,这些文件将在构建后进行分析。一些测试启动了应用程序的用户界面,因此我安装了jenkin

  • 问题内容: 我的python脚本未在crontab下运行。 我将其放在顶部的python脚本中: 我尝试这样做: 添加到我的: 我的/ var / log / cron文件说: 但是我的脚本没有运行,因为当我检查sql数据库时,什么都没有改变。如果我像这样直接在终端中运行它: 我得到正确的结果。 这是: 每条评论:是的,存在。我也可以使用just直接运行python脚本。作品。所以我不相信这是原因

  • 问题内容: 我正在使用NodeJS在Firebase中执行一些异步过程。 我想在完成所有NodeJS进程执行任务时停止,而无需使用Ctrl + C命令。 我试图退出该过程,但是它会在所有执行完成之前运行。 如何执行所有异步任务,然后退出脚本? 问题答案: 首先,您的所有异步过程都应为promise,然后将所有这些promise封装在一个promise中,并在该promise解析时退出。像这样:

  • 我们正在运行一个性能测试脚本。它执行并产生结果,但之后它只是挂起(无限等待),显示JVM应该已经退出,但没有退出 完整执行日志- 操作系统- java版本- jmeter版本-5.3 感谢您的指导!

  • 如果我从终端uvicorn main:app运行--重新加载一切工作。 当把它放在my_script.sh文件中时 然后什么都没发生。为什么? 我发现了这个:Uvicorn/FastAPI可执行文件,但似乎没有答案。

  • 我有一个如下所示的对象: 我要做的是,根据field1和field2的值,我需要设置isActive标志和相应的消息。但是,如果field1或field2的规则被激发,我需要停止规则处理。也就是说,我只需要执行1个成功的规则。 我在一篇文章中读到,执行Ksession.FireAllRules(1)可以解决这个问题。但是fireAllRules()方法在Drools6中不可用。我也试着把一个返回;